[ACM ] 102

看板C_and_CPP (C/C++)作者 (上了大學變點點龍)時間16年前 (2009/12/30 01:26), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 題號: ACM 102 遇到的問題: WA 有問題的code: (請善用置底文的標色功能) #include <stdio.h> #include <stdlib.h> char transform(int x){ switch (x){ case 0 : return 'B'; break; case 1 : return 'G'; break; case 2 : return 'C'; break; default: break; } } int main(){ double num[3][3]; while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf", &num[0][0],&num[0][1],&num[0][2],&num[1][0],&num[1][1],&num[1][2], &num[2][0],&num[2][1],&num[2][2])!=EOF) { double m , n=0 ; int p[3]={0,1,2}; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(j==i)continue; else{ for(int k=0;k<3;k++){ if((k==i) || (k==j))continue; else{ m=num[0][i]+num[1][j]+num[2][k]; if(n<=m){ if(n==m){ if(i<=p[0]) { if(((p[1]==1) && (j==2)) || ((p[1]==2) && (j==1))){ p[1]=2; p[2]=1; } } } else{ n=m; p[0]=i; p[1]=j; p[2]=k; } } } } } } } double sum=0; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(j != p[i])sum+=num[i][j]; } } char c[3]; for(int i=0;i<3;i++){ c[i]=transform(p[i]); } printf("%c%c%c %.lf\n",c[0],c[1],c[2],sum); } return 0; } 補充說明: 以上是 code , 不知道錯在哪了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.246.144

12/30 07:21, , 1F
偉哉
12/30 07:21, 1F

12/30 11:57, , 2F
這是bin packing嗎? code 不太環保...=.=
12/30 11:57, 2F

12/30 12:15, , 3F
沒有錯,不太環保?
12/30 12:15, 3F

12/30 12:37, , 4F
17756...=.=
12/30 12:37, 4F

12/30 15:37, , 5F
還是不懂,囧
12/30 15:37, 5F

12/30 18:05, , 6F
上面幾位是想建議你精簡程式碼,精簡後就比較容易偵錯了。
12/30 18:05, 6F

12/30 18:19, , 7F
了解,謝謝
12/30 18:19, 7F
文章代碼(AID): #1BEZlQXQ (C_and_CPP)
文章代碼(AID): #1BEZlQXQ (C_and_CPP)