作者cutecpu (可愛中央處理器)
看板C_and_CPP
標題Re: [問題] ACM 10903
時間Thu Apr 9 10:15:13 2009
紅色是跟你原來程式不一樣的地方,改一下就可以ac了
#include<stdio.h>
#include<memory.h>
int pl[101][2]; /*換個位置而已,也可以放到 main 裡面*/
int main()
{
int n,k,i,j=0;
int p,q;
float kk;
char b[9],a[9]; /* 8 改成 9*/
while(scanf("%d",&n)){
if(n==0) return 0;
scanf("%d",&k);
if(j>0)
printf("\n");/*資測間空行*/
j++;
memset(pl,0,sizeof(pl)); /* 歸0 */
for(i=0;i<k*n*(n-1)/2;i++){
scanf("%d %s %d %s",&p,a,&q,b);
if(a[0]=='s'&&b[0]=='p'){/*剪刀(p1)對布(p2)*/
pl[p][0]++;
pl[q][1]++;
}
else if(a[0]=='p'&&b[0]=='r'){/*布(p1)對石頭(p2)*/
pl[p][0]++;
pl[q][1]++;
}
else if(a[0]=='r'&&b[0]=='s'){/*石頭(p1)對剪刀(p2)*/
pl[p][0]++;
pl[q][1]++;
}
else if(a[0]=='s'&&b[0]=='r'){/*剪刀(p1)對石頭(p2)*/
pl[p][1]++;
pl[q][0]++;
}
else if(a[0]=='p'&&b[0]=='s'){/*布(p1)對剪刀(p2)*/
pl[p][1]++;
pl[q][0]++;
}
else if(a[0]=='r'&&b[0]=='p'){/*石頭(p1)對布(p2)*/
pl[p][1]++;
pl[q][0]++;
}
}
for(i=1;i<=n;i++){ /*印出答案*/
kk = pl[i][0]+pl[i][1];
if(!kk) printf("-\n");
else{
kk = pl[i][0]/kk;
printf("%.3f\n",kk);
}
}
}
return 0;
}
※ 引述《lanborghini (BMW)》之銘言:
: 題目出處:http://luckycat.kshs.kh.edu.tw/homework/q10903.htm
: 小弟我這題試了許久,一直找不到為什麼WA,
: 一開始一直以為是資測間沒空行,
: 可是改正之後還是不行~
: 麻煩各位高手解惑~感激不盡!!
: CODE:
: #include<stdio.h>
: int main()
: {
: int n,k,i,j=0;
: int p,q;
: float kk;
: char b[8],a[8];
: while(scanf("%d",&n)){
: if(n==0) return 0;
: scanf("%d",&k);
: if(j>0)
: printf("\n");/*資測間空行*/
: j++;
: int pl[101][2]={0};/*這邊[101][0]後面的兩個陣列[0]是用來記勝場數*/
: /*[1]是用來記敗場數*/
: for(i=0;i<k*n*(n-1)/2;i++){
: scanf("%d %s %d %s",&p,a,&q,b);
: if(a[0]=='s'&&b[0]=='p'){/*剪刀(p1)對布(p2)*/
: pl[p][0]++;
: pl[q][1]++;
: }
: else if(a[0]=='p'&&b[0]=='r'){/*布(p1)對石頭(p2)*/
: pl[p][0]++;
: pl[q][1]++;
: }
: else if(a[0]=='r'&&b[0]=='s'){/*石頭(p1)對剪刀(p2)*/
: pl[p][0]++;
: pl[q][1]++;
: }
: else if(a[0]=='s'&&b[0]=='r'){/*剪刀(p1)對石頭(p2)*/
: pl[p][1]++;
: pl[q][0]++;
: }
: else if(a[0]=='p'&&b[0]=='s'){/*布(p1)對剪刀(p2)*/
: pl[p][1]++;
: pl[q][0]++;
: }
: else if(a[0]=='r'&&b[0]=='p'){/*石頭(p1)對布(p2)*/
: pl[p][1]++;
: pl[q][0]++;
: }
: }
: for(i=1;i<=n;i++){ /*印出答案*/
: kk = pl[i][0]+pl[i][1];
: if(!kk) printf("-\n");
: else{
: kk = pl[i][0]/kk;
: printf("%.3f\n",kk);
: }
: }
: }
: return 0;
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.4.112
→ cutecpu:忘了#include<memory.h> 好像也是新加的 XD 04/09 10:16
→ bleed1979:我是用#include <string.h> 04/09 17:18
推 lanborghini:感激不盡耶~~後來我只把a b的陣列加大就過了~^^~謝謝 04/09 20:07