Перевести код с Паскаля на СИ - C (СИ) (156884)
Формулировка задачи:
Попробовал перевести но выдает не те результаты. Не подскажите где ошибка?
Листинг программы
- Program P1;
- Var Map: Array[1..100,1..100] of Integer;
- S,G,F: Array[1..100] of Integer;
- A,I,B,J,N,M,K,L,P,R: Integer;
- Begin
- Readln(N,M);
- For A:=1 to N do
- For B:=1 to N do
- Map[A,B]:=16000;
- For I:=1 to M do
- begin
- Read(L);
- For J:=1 to L do
- Read(S[J]);
- For A:=1 to L do
- For B:=1 to L do
- Map[S[A],S[B]]:=1;
- End;
- For A:=1 to N do
- For B:=1 to N do
- For I:=1 to N do
- If Map[A,B]>Map[A,I]+Map[I,B] then Map[A,B]:=Map[A,I]+Map[I,B];
- Read(K);
- A:=0;
- For I:=1 to K do
- begin
- Readln(G[I],S[I],F[I]);
- A:=A+G[I];
- End;
- P:=0;
- R:=P;
- For I:=1 to N do
- begin
- P:=0;
- For J:=1 to K do
- begin
- If I=S[J] then begin P:=P+G[J]; continue; End;
- If Map[I,S[J]]=16000 then begin P:=0; Break; End;
- If (Map[I,S[J]]*4>G[J]) and (F[J]=0) then begin P:=0; Break; End;
- If F[J]=1 then begin P:=P+G[J]; Continue; End;
- P:=P+G[J]-Map[I,S[J]]*4;
- End;
- If P>R then
- begin
- R:=P;
- L:=I;
- End;
- End;
- If R<>0 then Writeln(L,' ',A-R)
- else Writeln(0);
- End.
Листинг программы
- #include <stdio.h>
- void main()
- {
- int map[100][100],s[100],g[100],f[100],a,b,i,j,n,m,k,l,p,r;
- scanf("%d%d",&n,&m);
- for(a=0;a<n;a++)
- for(b=0;b<n;b++)
- map[a][b]=16000;
- for(i=0;i<m;i++)
- {
- scanf("%d",&l);
- for(j=0;j<l;j++)
- scanf("%d",&s[j]);
- for(a=0;a<l;a++)
- for(b=0;b<l;b++)
- map[s[a]][s[b]]=1;
- }
- for(a=0;a<n;a++)
- for(b=0;b<n;b++)
- for(i=0;i<n;i++)
- if(map[a][b]>map[a][i]+map[i][b])
- map[a][b]=map[a][i]+map[i][b];
- scanf("%d",&k);
- a=0;
- for(i=0;i<k;i++)
- {
- scanf("%d%d%d",&g[i],&s[i],&f[i]);
- a+=g[i];
- }
- p=0;
- r=p;
- for(i=0;i<n;i++)
- {
- p=0;
- for(j=0;j<k;j++)
- {
- if(i==s[j]) { p+=g[j]; continue;}
- if(map[i][s[j]]=16000) {p=0; break;}
- if(map[i][s[j]]*4>g[j] && f[j]==0) { p=0; break;}
- if(f[j]=1) { p+=g[j]; continue;}
- p+=g[j]-map[i][s[j]]*4;
- }
- if(p>r) { r=p; l=i;}
- }
- if(r!=0) printf("%d %d",l,a-r);
- else putchar('0');
- system("PAUSE");
- }
Решение задачи: «Перевести код с Паскаля на СИ»
textual
Листинг программы
- ==
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д