草泥马的斗地主
来源:互联网 发布:淘宝上什么假货最多 编辑:程序博客网 时间:2024/04/28 11:05
#include<cstdio> #include<cstring>using namespace std;int n,t,s[15];int ans,a,b;int min(int a,int b){return a>b?b:a;}void dfs(int now){ if(now>ans) return; int s1,s2,s3,s4; s1=s2=s3=s4=0; for(int i=1;i<=14;i++) if(s[i]==1) s1++;//统计单牌和对牌个数; for(int i=1;i<=14;i++) if(s[i]==2) s2++; for(int i=1;i<=14;i++) if(s[i]==4){ s4++; if(s1>=2) s1-=2; //四能多带尽量多带; else if(s2>=2) s2-=2; else if(s2>=1) s2--; } for(int i=1;i<=14;i++)if(s[i]==3){ s3++; if(s1>=1) s1--; //三带; else if(s2>=1) s2--; } ans=min(ans,now+s1+s2+s3+s4); int j; for(int i=1;i<=8;i++){ //有单顺子的情况; for(j=i;j<=12;j++){ s[j]--; if(s[j]<0) break; if(j-i>=4) dfs(now+1); } if(j==13) j--; //回溯; while(j>=i) s[j--]++; } for(int i=1;i<=10;i++){ //有双顺子的情况; for(j=i;j<=12;j++){ s[j]-=2; if(s[j]<0) break; if(j-i>=2) dfs(now+1); } if(j==13) j--; //回溯; while(j>=i) s[j--]+=2; } for(int i=1;i<=11;i++){ //有三顺子的情况; for(j=i;j<=12;j++){ s[j]-=3; if(s[j]<0) break; if(j-i>=1) dfs(now+1); } if(j==13) j--; //回溯; while(j>=i) s[j--]+=3; }}int main(){ scanf("%d%d",&t,&n); while(t--){ memset(s,0,sizeof(s)); ans=23; for(int i=1;i<=n;i++){ //将A,2,大王,小王放到最后; scanf("%d%d",&a,&b); if(a==0) s[14]++; if(a==1) s[12]++; if(a==2) s[13]++; if(a>=3) s[a-2]++; } dfs(0); printf("%d\n",ans); } return 0;}
去年暴0真是永远的痛啊。。。没什么可说的。。。就是先枚举所有顺子的情况,,,然后再出。据说带牌要尽量带单牌。。。表示我打扑克还是太弱了啊。。
。
0 0
- 草泥马的斗地主
- 我的QQ斗地主史及斗地主经验
- 一个斗地主的算法
- java 斗地主的写法
- 斗地主背后的思考
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主
- 斗地主给我的刺激
- 斗地主AI算法的简单分析
- WPF写的斗地主游戏源码
- com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user
- 《Spring从入门到精通》第三章 Spring基础概念
- MATLAB与TXT文件的数据交换
- Android-crop裁剪图片用法
- 汽车广告
- 草泥马的斗地主
- 如何安装最新的 XFCE 桌面?
- 【iOS开发】Xcode8不支持iOS10.1系统设备的解决方案
- test
- uva 1644 Prime Gap 二分
- Sublime 格式化代码 设置快捷键以及插件使用
- Android 面试基础知识 下(重要)
- Python模块探秘之二: Smtplib发送带有各种附件的邮件
- 笔记一java基本数据类型