麻将
来源:互联网 发布:pk10免费计划软件 编辑:程序博客网 时间:2024/04/24 22:53
麻将
先枚举加入的牌,再枚举对子,最后判断剩下的牌是否合法
对于剩下的牌,先组成刻子,在和后面的组成顺子
三张一样的牌需要拆开,只有前面有单牌需要组成顺子
#include<iostream>#include<cstdio>#include<cstring>#define maxn 505using namespace std;int n,m;int a[maxn],s[maxn];int ans[maxn];inline int read(){ int x=0; char ch=getchar(); while(ch<'0'&&ch>'9') ch=getchar(); while(ch>='0'&&ch<='9'){ x=x*10+ch-'0'; ch=getchar(); } return x;}bool check(int x){ bool flag=0; for(int i=1;i<=n;i++){ memcpy(s,a,sizeof(s)); //for(int k=1;k<=n+2;k++) s[k]=a[k]; s[x]+=1; flag=1; s[i]-=2; for(int k=1;k<=n+2;k++) { if(s[k]<0){ flag=0; break; } s[k]%=3; s[k+1]-=s[k]; s[k+2]-=s[k]; } if(flag) return 1; } return 0;}int main(){ //freopen("in.txt","r",stdin); scanf("%d%d",&n,&m); int x; for(int i=1;i<=3*m+1;i++){ scanf("%d",&x); a[x]++; } for(int i=1;i<=n;i++) if(check(i)) ans[++ans[0]]=i; if(!ans[0]) printf("NO\n"); else{ for(int i=1;i<=ans[0];i++) if(i!=ans[0]) printf("%d ",ans[i]); else printf("%d\n",ans[i]); } return 0;}
阅读全文
1 0
- 麻将
- 麻将
- 麻将
- 麻将
- 麻将
- 麻将
- 麻将,麻将!
- 快乐麻将
- 麻将趣事
- 广东麻将
- 麻将游戏
- 麻将类
- 麻将遥控器
- 麻将遥控器
- UVA11210麻将
- bzoj1028 麻将
- 成都麻将
- [JSOI2007]麻将
- java多态性深入分析(静态动态绑定)
- 【Leetcode】【python】Minimum Path Sum
- 大模拟 猪国杀 杀蚂蚁
- 关于UITableView的分割线
- [I.MX6Q][Android6.0.1_r3]之源码获取及编译
- 麻将
- java二维数组初始化和基本操作
- 【Leetcode】【python】Valid Number
- 我的产品观
- [分块 回文自动机] LOJ#6070. 「2017 山东一轮集训 Day4」基因
- 我的技术观
- (重要!!!!!)final、static、static final修饰引用类型时的区别
- 我的管理观
- numpy.random.uniform介绍