Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
请求指点,pku---2005需求高人的帮助啊,想了一天还是未想出错误的地方,附上源代码,请求指点 #include<iostream.h> #include<iomanip.h> int card[12];//储存剩余card的张数(未显示的),如:n=1,已知 2,3,4,则card[2]=card[3]=card[4]=3 int n; void main() { char read[10]; int three[3];//three[0]储存对方card,three[1],three[2]储存我方cards; int sum; int remain; int i; double proba; cin>>n; cout<<endl; while(n>0) { for(i=0;i<3;i++)//读入数据 { cin>>read; if(read[0]=='A') three[i]=11; else if(read[0]=='J'||read[0]=='Q'||read[0]=='K'||read[0]=='T') three[i]=10; else { three[i]=read[0]-'0'; } } if( (three[2]==2 && three[1]==2) || three[1]+three[2]<=three[0]+2 ) //当我方全为2时,或我方之和+2<对方牌时,我方必不能胜 { cout<<"0.000%"<<endl; //cout<<0<<endl; cout<<endl; cin>>n; continue; } for(i=2;i<10;i++)//初始化已有的牌的张数,如n=1时,2有card[2]=4张,10(即10,J,Q,K)有card[10]=4*4=16张 { card[i]=4*n; } card[10]=16*n; card[11]=4*n; card[three[0]]--;//减去已知的card ,即得剩余的card card[three[1]]--; card[three[2]]--; remain=three[1]+three[2]-three[0];//我方之和减去对方的牌面值,得到我方不能取胜的最低值 sum=0; for(i=2;i<remain;i++)//我方能取胜的情况 { sum+=card[i];//sum储存我方能取胜时,对方不能 } proba=double(sum)/(n*52-3)*100;//计算概率,并化为百分数 cout<<setiosflags(ios::fixed)<<setprecision(3)<<proba<<'%'<<endl; cout<<endl; cin>>n; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator