首页 > 编程知识 正文

Mahjong麻将连连看下载,波克麻将单机版四人

时间:2023-05-03 11:40:15 阅读:43852 作者:1054

Description Input的第一行加上整数n(n=100 ),等于打了n次超级麻将。 以下n行,每行100个a1.a100表示每次玩牌时手中的牌的数量。 ai有表示数字为I的卡。 (0=ai=100 ) Output输出n行,如果有蹊跷则输出Yes,否则输出No。 请注意Yes,No区分大小写。 Sample Input 3

2 4 0 0 0 0 0 …… 0 (共98个0 ) ) )。

2 4 2 0 0 0 0 …… 0 (共97个0 ) ) )。

2 3 2 0 0 0 0 …… 0 (共97个0 ) Sample Output Yes

o解决问题这个问题多是用贪婪$Hash$检索出来的,其实$DP$也能解决这个问题。

我们认为选择麻将的优先顺序互不影响。 而且,如何选择现在的卡,只会影响几个相邻的卡。 我们把这些影响的状态列入方程,保证没有效果。

令: $f[i][j][k][0/1]$表示:“选择第$i$张卡时,第$i-1$张卡为$j$张,第$i$张卡为$k$张,应当前选择

所以我们有一个转移方程:

考虑选择这个I号牌制作(对子)。 if(k1 ) f ) I ) [j][k][1]|=f ) I ) [j][k-2][0]; 考虑I号牌触(三radxn ) (if ) K2 ) f ) I ) j ) k ) )1|=F ) I )针(四raad xn ) )1),f ) I ) 考虑I的三张卡吃(三个连续的数字) if(j=ka[I-2]=k ) f[I][j][k] )|=f[I-1][a[I-2]-k] )结果为$ f

附上的代码有玄学的写法。 $i==1$时,$a[i-2]$过境? 我不知道你访问了哪里,到了$AC$就活下去吧。

人生到处都是惊喜……不是吗?

1 # includeset2# include map3# include ctime4# include cmath5# include queue6# include stack7# include cstdio8# include string include iostream 13 # include algorithm 14 # definelllonglong 15 # define reregister 16 # defining 18 19 int n,a[105]; 20 bool f[105][105][105][2]; 122intmain(23 ) 24Scanf ) ' %d ',n ); 25瓦时(n-- ) 27毫秒) f,0,sizeof(f ) f ); 28for(reintI=1; i=100; I ) scanf('%d ',a[i]; 29 f[0][0][0][0]=1; 30for(reintI=1; i=100; I ) 31for(reintj=0; j=a[i-1]; j ) 32for(reintk=0; k=a[i]; k ) 33(34if ) k1 ) f[i][j][k][1]|=f[i][j][k-2][0]; 5if(K2 ) f ) I ) j )|=F ) I ) K-3 ) [1],f ) I ) [ j ] [0]|=f [ I ] [ j ] [ k ] [3] 6if (k3 ) f f ) I ) j ) k ) )0)|=F ) j ) ) K-4 7if(j=ka(I-2 )=k ) f ) [j][k] )|=f(I-1 ) [a ) I-2 ) '是 n ' : '否 n '; 40 ) 41返回0; 42 }

转载于:3359 www.cn blogs.com/Navi-aw son/p/7257368.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  • 相关阅读