玩骰子(概率,暴力)
2015-12-01 08:42
387 查看
暴力就行,不过要注意,如果一开始就赢了,那么就不用再置骰子了那么就为1了。
#include<stdio.h> #include<stdlib.h> #include<algorithm> #include<iostream> #include<queue> #include<math.h> int kk(); using namespace std; typedef long long ll; int a[7]; int b[4]; int c[4]; int d[4]; int main(void) { int n,i,j,k,p,q,s; scanf("%d",&k); while(k--) { for(i=1; i<=3; i++) { scanf("%d",&b[i]); c[i]=b[i]; } for(i=1; i<=3; i++) { scanf("%d",&a[i]); d[i]=a[i]; } int nn=kk(); double sum; if(nn==1) { sum=1; } else { int uu=0; for(i=1; i<=3; i++) { int rr=0; for(s=1; s<=6; s++) { for(j=1; j<=3; j++) { c[j]=b[j]; } c[i]=s; rr+=kk(); } if(rr>uu) { uu=rr; } } sum=1.0*uu/6; } printf("%.3f\n",sum); } return 0; } int kk() { int i,j,k,p,q; sort(c+1,c+4); sort(d+1,d+4); int cnt=0; int cnt2=0; for(i=2; i<=3; i++) { if(d[i]==d[i-1]) { cnt++; } if(c[i]==c[i-1]) { cnt2++; } } if(cnt2>cnt) { return 1; } else if(cnt2<cnt) { return 0; } else if(cnt==cnt2) { if(cnt==0) { int nx=d[1]+d[2]*10+d[3]*100; int ny=c[1]+c[2]*10+100*c[3]; if(ny>nx) { return 1; } else return 0; } if(cnt==1) { for(i=1; i<=3; i++) { if(c[i]!=c[2]) { break; } } int nx=c[2]*100+c[2]*10+c[i]; for(i=1; i<=3; i++) { if(d[i]!=d[2]) { break; } } int ny=d[2]*100+d[2]*10+d[i]; if(nx>ny) { return 1; } else return 0; } else if(cnt==2) { if(c[1]>d[1]) { return 1; } else return 0; } } }
相关文章推荐
- linux下安装java
- 这样顶级人生规划 ,想不成功都难
- 【Beta】Daily Scrum Meeting第三次
- 【Beta】Daily Scrum Meeting第三次
- SQL Server: 2005/2014 普通备份与压缩备份对比
- Ultra Pull To Refresh实现知乎下拉刷新风格注意事项
- java的数据类型
- VMware Workstation 10+Centos7(64位)共享文件夹问题
- redis安装在以服务形式安装在linux上
- 多态-接口回调Demo
- java 1.7
- iOS中 陀螺仪/加速器 韩俊强的博客
- 串口流控
- iOS中 陀螺仪/加速器 韩俊强的博客
- 标识符定义
- Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
- 从小白慢慢往上爬的历程--Java运算符
- Cocos2Dv3.4在AppDelegate中不返回的情况及解决
- Cocos2Dv3.4在AppDelegate中不返回的情况及解决
- Cocos2Dv3.4在AppDelegate中不返回的情况及解决