Подскажите, пожалуйста, как решить задачу на Turbo Pascal и что неверно в моем коде
Задача:
Вы начали составлять график дежурства для роты солдат, но вдруг столкнулись с одним очевидным фактом. Любые два солдата, побывавшие вместе на одном из дежурств, начинают раздражать друг друга. Если два солдата уже дежурили вместе три раза, на четвёртый раз они могут разозлить друг друга настолько сильно, что, очевидно, произойдёт непоправимое. Поэтому вам нужно составить график дежурства на как можно большее количество дней таким образом, чтобы любые два солдата дежурили вместе не более трёх раз. Исходные данные В первой строке записано нечётное число n (3 ≤ n ≤ 99). Результат В первой строке выведите целое число k, максимальное количество дней, на которое можно составить график дежурств. В i-й из следующих k строк выведите через пробел номера трёх солдат, которые должны вступить на дежурство в i-й день. Солдаты занумерованы целыми числами от 1 до n. Мой код: Program Pr; Uses CRT; Var n,i,j,t,k:integer; A:array[1..100,1..100] of integer; R:array[1..5000,1..3] of integer; begin CLRSCR; Readln(n); for i:=1 to N do for j:=1 to N do if i<>j then A[i,j]:=0 else A[i,j]:=3; k:=0; for i:=1 to N do for j:=1 to n do for t:=1 to n do if (A[i,j]<3)and(A[i,t]<3) and(A[j,t]<3) then begin inc(k); R[k,1]:=i; R[k,2]:=j; R[k,3]:=t; inc(A[i,j]); inc(A[i,t]); inc(A[j,t]); inc(A[j,i]); inc(A[t,i]); inc(A[t,j]); end; writeln(k); for i:=1 to k do writeln(R[i,1],' ',R[i,2],' ',R[i,3]); Readln; end. |
Цитата:
|
Цитата:
|
Цитата:
|
Попробуйте снизить границу массива 5000 в несколько раз: может быть, для Вашего Паскаля это многовато?
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +4, время: 10:25. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.