Страница 1 из 2
Sos!!!
Добавлено: 02 мар 2007, 14:18
San4ez
Ребятки, вы тут все такие умницы.... помогите решить задачку....
Re: Sos!!!
Добавлено: 02 мар 2007, 14:20
San4ez
Задача такова:
Дана целочисленная квадратная матрица A (n,n).роверьте, являются ли все числа, расположенных выше главной и побочной диагоналей: различными способам.
Re: Sos!!!
Добавлено: 02 мар 2007, 15:23
Хыиуду
Ответ: все числа в целочисленной квадратичной матрице A(n,n) выше главной и побочной диагоналей, являются числами, а не различными способами.
На будущее - темы надо называть осмысленно
Re: Sos!!!
Добавлено: 02 мар 2007, 16:13
Колядин Максим
San4ez писал(а):Задача такова:
Дана целочисленная квадратная матрица A (n,n).роверьте, являются ли все числа, расположенных выше главной и побочной диагоналей: различными способам.
Что за ".роверьте", что за "числа, расположенных" и что за "выше главной и побочной диагоналей: различными способам."???
P. S.
Попробуй сам понять смысл поставленного тобой вопроса...
Re: Sos!!!
Добавлено: 02 мар 2007, 18:19
San4ez
Ещё раз пишу...
Дана целочисленная квадратная матрица A (n,n). Проверьте, являются ли все числа различными, расположенные выше главной и побочной диагоналей.
Re: Sos!!!
Добавлено: 03 мар 2007, 19:32
San4ez
Ребятки, ну, помогите...!!!! Плиииизззз! )))))
Re: Sos!!!
Добавлено: 05 мар 2007, 04:57
Oleg_Rus
можно устроить прогон по матрице, занести все числа в одномерный массив, и проверяем на различность.
все просто...
Re: Sos!!!
Добавлено: 05 мар 2007, 05:00
Oleg_Rus
Razn:=False;
// просотр массива
for i:=1 to n do
for j:=1 to n do
begin
b[k]:=a[n, n];
inc(k);
end;
// проверка
for i:=1 to n do
for j:=1 to n do
if b=b[j] then Razn:=True;
if Razn then writeln('Yes') else Writeln('No');
________________
если кто увидит ошибку, проссьба - известить!
Re: Sos!!!
Добавлено: 05 мар 2007, 09:20
somewhere
" писал(а):b[k]:=a[n, n];
А смысл-то какой одно и тоже число дублировать?
" писал(а):// просотр массива
for i:=1 to n do
for j:=1 to n do
begin
b[k]:=a[n, n];
inc(k);
end;
Да и вообще лишняя операция - можно сделать на месте
" писал(а):for i:=1 to n do
for j:=1 to n do
if b=b[j] then Razn:=True;
Что-то тяжело до меня доходит зачем такая вложенность? Не проще-ли так?
Код: Выделить всё
for i:=1 to n-1 do if b[i]=b[i+1] then Razn:=True;
А лучше так
Код: Выделить всё
I := 2;
While (i<n) and (b[i]<>b[i-1]) do inc(I);
Razn := (I=n);
Вообще задача - установить различие элементов ВЫШЕ главной и побочной диагоналей. Координато этих элементов легко установить, из них исключить те, которые принадлежат главной (X=Y) и побочной (X=N-Y+1)
Re: Sos!!!
Добавлено: 05 мар 2007, 09:43
Oleg_Rus
// цитата от Somewhere
for i:=1 to n-1 do if b=b[i+1] then Razn:=True;
а тебе не кажется, что здесь она проверит только два стоящих рядом элемента?
а если будет так 1 3 4 1?
провериться только 1 и 2, 2 и 3, 3 и 4, а 1 и 4 не сравниваются...