#28012: 記憶體區段錯誤????????


weikc.lip19@stu.chhs.hcc.edu.t ... (魏楷宸)

學校 : 不指定學校
編號 : 170569
來源 : [1.170.130.46]
最後登入時間 :
2023-05-23 16:56:22
g471. 12959: Strategy Game -- UVA12959CPE第一題 | From: [122.118.232.45] | 發表日期 : 2021-11-10 00:27

#include<stdio.h>

int main(){

int i,ans,k,max;

int j;//人數

int r;//回合 

int num[500];

int peo[500];

 

while(1){

scanf("%d %d",&j,&r);

if(j==0&&r==0)

break;

max = 0;

for(k = j-1;k >= 0; k--){

peo[k] = 0;

}

for(i = 0;i < j*r;i++){

scanf("%d",&num[i]);

}

for(k = 0;k < j*r;k++){

peo[k%j] += num[k];

}

 

for(k = j-1;k >= 0; k--){

 

if(peo[k]>max){

max = peo[k];

ans = k+1;

}

}

printf("%d\n",ans);

}

求幫DEBUG

 
#28018: Re:記憶體區段錯誤????????


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
g471. 12959: Strategy Game -- UVA12959CPE第一題 | From: [27.247.226.53] | 發表日期 : 2021-11-10 11:27

#include

int main(){

int i,ans,k,max;

int j;//人數

int r;//回合 

int num[500];

int peo[500];

 

while(1){

scanf("%d %d",&j,&r);

if(j==0&&r==0)

break;

max = 0;

for(k = j-1;k >= 0; k--){

peo[k] = 0;

}

for(i = 0;i < j*r;i++){

scanf("%d",&num[i]);

}

for(k = 0;k < j*r;k++){

peo[k%j] += num[k];

}

 

for(k = j-1;k >= 0; k--){

 

if(peo[k]>max){

max = peo[k];

ans = k+1;

}

}

printf("%d\n",ans);

}

求幫DEBUG


是不是陣列開太小?500*500=250000

 
#28232: Re:記憶體區段錯誤????????


ic231542211 (willie)

學校 : 不指定學校
編號 : 44051
來源 : [123.194.107.200]
最後登入時間 :
2022-09-15 15:14:37
g471. 12959: Strategy Game -- UVA12959CPE第一題 | From: [123.194.107.200] | 發表日期 : 2021-11-19 17:58

#include

int main(){

int i,ans,k,max;

int j;//人數

int r;//回合 

int num[500];

int peo[500];

 

while(1){

scanf("%d %d",&j,&r);

if(j==0&&r==0)

break;

max = 0;

for(k = j-1;k >= 0; k--){

peo[k] = 0;

}

for(i = 0;i < j*r;i++){

scanf("%d",&num[i]);

}

for(k = 0;k < j*r;k++){

peo[k%j] += num[k];

}

 

for(k = j-1;k >= 0; k--){

 

if(peo[k]>max){

max = peo[k];

ans = k+1;

}

}

printf("%d\n",ans);

}

求幫DEBUG

for(k = j-1;k >= 0; k--){

 

if(peo[k]>max){

max = peo[k];

ans = k+1;

}

}

這裡可以改寫成:

 

for(k = 0; k <j; k++){

   if(peo[k]>=max){//平局時,輸出最後出場玩家的編號

   max = peo[k];

   ans = k;

}

 

另外,最後答案輸出改為 ans+1

}

 
ZeroJudge Forum