Re: [問題] ACM 10903

看板C_and_CPP (C/C++)作者 (可愛中央處理器)時間17年前 (2009/04/09 10:15), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
紅色是跟你原來程式不一樣的地方,改一下就可以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

04/09 10:16, , 1F
忘了#include<memory.h> 好像也是新加的 XD
04/09 10:16, 1F

04/09 17:18, , 2F
我是用#include <string.h>
04/09 17:18, 2F

04/09 20:07, , 3F
感激不盡耶~~後來我只把a b的陣列加大就過了~^^~謝謝
04/09 20:07, 3F
文章代碼(AID): #19tLeogY (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
2
12
完整討論串 (本文為第 2 之 2 篇):
1
3
2
12
文章代碼(AID): #19tLeogY (C_and_CPP)