Не могу найти ошибку в коде

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
takeshy
Сообщения: 2
Зарегистрирован: 11 май 2013, 23:26

Не могу найти ошибку, в чем проблема?
Текст задания.
Несомненно, одно из самых важных и ответственных дел, которые существуют в нашем мире — это воспитание детей. Возможно, если вы будете хорошо учиться и покажете высокие результаты на этом соревновании, вас примут в детский сад нянечкой. Но вы должны быть хорошо подготовлены к принятию такой ответственной должности! Рассмотрим типичные задачи, которые приходится решать каждой нянечке в детском саду.

Всем знакома детская игра «мозаика», где можно выкладывать картинки из разноцветных кусочков. Пусть имеется М разных цветов и по N кусочков мозаики каждого цвета. Поиграв мозаикой, дети редко разбирают все кусочки правильно, так чтобы каждый кусочек лежал в коробочке того же цвета. Этим приходится заниматься нянечке.

Для облегчения вашей задачи дети уже разложили мозаику в коробочки, в каждую коробочку по N кусочков. Но некоторые (а может и все) кусочки оказались в коробочках не своего цвета. За одно движение руки можно или переложить один кусочек из коробки в коробку, или просто перенести руку к другой коробочке. Начинать разбор можно с любой коробочки. Движение руки к первой коробочке не считается ходом. Определите, какое наименьшее количество движений руки придётся сделать, чтобы разложить все кусочки мозаики в свои коробочки.

Исходные данные
В первой строке числа 2 ≤ M ≤ 500 (число цветов) и 1 ≤ N ≤ 50 (число кусочков каждого цвета). В следующих M строках перечислены цвета, числа в строке разделены одним пробелом.

Результат
Минимально возможное количество движений руки, которое надо сделать чтобы разложить все кусочки по своим коробочкам.

Пример
исходные данные
4 3
1 3 1
2 3 3
1 2 2
4 4 4

результат
6
Мой код в c++

Код: Выделить всё

#include <iostream.h>
void main()
{
short M,N;
int j;
cout<<"Enter amounts of colors and pieces\n";
cin>>M>>N;
cout<<"\nEnter all pieces\n";
short a[500][50];
for (int i=0; i<M; i++)
for ( j=0; j<N; j++)
cin>>a[i][j];
short t,z,u=0,kolvo=0,p=0,q=0;

do
{
for ( i=0; i<M; i++)
for ( j=0; j<N; j++)
if(a[i][j]!=(i+1))
{
p=j;
q=i;

if(u==0)
t=a[i][j];
else
{
z=a[i][j];
a[i][j]=t;
t=z;
}
kolvo++;



for (int k=0; k<N; k++)
if (a[t-1][k]!=t)
{
z=a[t-1][k];
a[t-1][k]=t;
t=z;
u=1;
kolvo++;

}

if (N==1)i=t-2;
else
i=t-1;
j=0;

}

}while((i<M)&&(j<N));
if(u==1) kolvo--;
cout<<"\nAnswer is="<<kolvo;


}
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

с чего решили что в коде есть ошибка?
Приглашаю на свой блог о программировании: pro-prof.com
Ответить