mahjong
題目描述
“為什么, 你們的力量在哪里得到如此地......”
“我們比 1 分鐘前的我們還要進(jìn)步, 雖然很微小, 但每轉(zhuǎn)一圈就會(huì)前進(jìn)一寸。這就是鉆頭啊!”
“那才是通向毀滅的道路。為什么就沒(méi)有意識(shí)到螺旋族的極限”
“那是你的極限。那只不過(guò)是在封閉的宇宙里, 象國(guó)王一樣將其他生命困住的你自己的極限而已。給
我記好了, 我們的鉆頭將在這片宇宙中鉆開(kāi)風(fēng)洞。已經(jīng)倒下的人們的愿望, 和后繼邇來(lái)的人們的希望。將
這兩股思念交織成二重螺旋, 鑿出馳騁于明天的未來(lái)之路。這就是天元突破! 這就是 Gurren Lagann! 我
的鉆頭是開(kāi)創(chuàng)天際的鉆頭!”
終于,GranzeBorma 爆炸了。
“那么, 這片宇宙, 一定要保護(hù)好......”
西蒙回答了 Anti-Spiral 這最后的一句話。
“那是當(dāng)然。人類還沒(méi)有愚蠢到那種地步”
Anti-Spiral 的終結(jié), 化做為銀河各地的螺旋族歡喜的信息, 從四面八方傳來(lái)。
——在那這之后要說(shuō)的話, 也所剩無(wú)幾了。
回到地球后的妮亞與西蒙結(jié)了婚, 并且永遠(yuǎn)地離開(kāi)了, 因?yàn)樗怯?Anti-Spiral 創(chuàng)造出來(lái)的假想生命。
但是在離別的那一瞬間, 妮亞與西蒙依然互相微笑著。
時(shí)光飛逝, 在地球大總統(tǒng)羅修的努力下, 全銀河螺旋力和平利用會(huì)議得以召開(kāi)。超銀河大 Gurren 承
載著地球的代表踏上旅途。還有通過(guò)新聞, 想起與大家的種種回憶的昔日大 Gurren 團(tuán)的成員。
然后——
在一個(gè)遠(yuǎn)離市區(qū)的地方, 有一個(gè)男人教會(huì)了少年使用鉆頭的方法。
夜空中,Gurren Lagann 畫出螺旋的軌道, 從男人與少年的頭頂飛過(guò)。
在那前方, 螺旋的朋友們正在那片群星中等待著我們。
終于有一天,在這顆古老的星球上誕生了一種了不起的游戲——mahjong
游戲只使用萬(wàn)、筒、條三種花色,即以下 27 種牌面:
每一種牌面各有 4 張,總計(jì) 108 張牌。
胡牌的牌型為 4 個(gè)“句子”和 1 副“將牌”。
?
句子一共以下有兩種形式: ? 三張相同花色且連續(xù)的牌,如圖1 ? 三張相同的牌,如圖2 圖1 圖2 將牌:兩張相同的牌,如: 當(dāng)手牌構(gòu)成 4 個(gè)“句子”和 1 副“將牌”時(shí)則構(gòu)成胡牌牌型,如: 聽(tīng)牌:當(dāng) 13 張手牌再加上某一張就能成胡牌牌型時(shí)稱之為聽(tīng)牌,如: 聽(tīng)牌時(shí)再加上某一張就能胡牌,那我們就稱那張牌是聽(tīng)的牌 如圖牌型就聽(tīng)三、六條 現(xiàn)在你手中有 14 張牌,求打出第幾張牌會(huì)使得你聽(tīng)得牌的張數(shù)最多,最多聽(tīng)多少?gòu)埮?/p>
搜索即可,暴力枚舉丟掉哪張牌...每種牌爆搜判斷過(guò)去
意會(huì)一下...代碼有注釋(tong[][]是一個(gè)桶數(shù)組)
1 #include<cstdio> 2 #include<queue> 3 #include<iostream> 4 #include<cstring> 5 using namespace std; 6 inline int read(){ 7 int ans=0,f=1;char chr=getchar(); 8 while(!isdigit(chr)){if(chr=='-') f=-1;chr=getchar();} 9 while(isdigit(chr)){ans=(ans<<3)+(ans<<1)+chr-48;chr=getchar();} 10 return ans*f; 11 }const int n=14; 12 struct P{int cnt,typ,num;char p;}a[50]; 13 int tong[4][25],ans1,ans2; 14 bool dfs(int a,int b,int c,int d){//a--->兩個(gè)相同牌個(gè)數(shù) b--->牌型 c--->將 d--->句子 15 if(a>=3) return 0; 16 bool ff;int fa,fb; 17 if(c==1&&d==4) return 1; 18 if(b==9) fb=1,fa=a+1;else fb=b+1,fa=a;//下一個(gè)牌型 19 if(tong[a][b]>=2&&!c){//當(dāng)將牌用 20 tong[a][b]-=2; 21 ff=dfs(a,b,1,d); 22 tong[a][b]+=2; 23 if(ff) return 1; 24 }if(tong[a][b]>=3){//當(dāng)句子用 25 tong[a][b]-=3; 26 ff=dfs(fa,fb,c,d+1); 27 tong[a][b]+=3; 28 if(ff) return 1; 29 }if(b>2&&tong[a][b]&&tong[a][b-1]&&tong[a][b-2]){//當(dāng)對(duì)子(要加上一個(gè))用 30 tong[a][b]--,tong[a][b-1]--,tong[a][b-2]--; 31 ff=dfs(a,b,c,d+1); 32 tong[a][b]++,tong[a][b-1]++,tong[a][b-2]++; 33 if(ff) return 1; 34 }return dfs(fa,fb,c,d); 35 } 36 inline bool hu(){ 37 int a=0,b=0; 38 for(int i=1;i<=n;++i){ 39 for(int j=0;j<3;j++){ 40 if(tong[j][i]==3) a++; 41 if(tong[j][i]==2) b++; 42 } 43 } 44 if(a==4&&b==1) return 1; 45 return 0; 46 } 47 int main(){ 48 for(int i=1,x;i<=n;++i){ 49 cin>>x;char chr=getchar(); 50 a[i].num=x; 51 if(chr=='p') a[i].typ=2; 52 else if(chr=='w') a[i].typ=1; 53 else a[i].typ=0; 54 ++tong[a[i].typ][a[i].num]; 55 }int pp=0; 56 if(hu()) pp=-1; 57 for(int i=1,pp;i<=n;++i){pp=0; 58 --tong[a[i].typ][a[i].num]; 59 for(int j=0;j<=2;++j) 60 for(int k=1;k<=9;++k){ 61 ++tong[j][k]; 62 if(dfs(0,1,0,0)) pp+=5-tong[j][k]; 63 tong[j][k]--; 64 }++tong[a[i].typ][a[i].num]; 65 if(pp>ans1) ans1=pp,ans2=i; 66 } 67 cout<<ans2<<" "<<ans1+pp; 68 return 0; 69 } 70 /* 71 1p 1p 1p 2w 2w 2w 3w 3w 3w 1s 1s 1s 2s 2s 72 13 7 73 */ 74 /* 75 1p 1p 1p 2w 2w 2w 3w 3w 3w 1s 1s 1s 6s 6s 76 1 3 77 */?
轉(zhuǎn)載于:https://www.cnblogs.com/zhenglw/p/10670358.html
總結(jié)
 
                            
                        - 上一篇: CSDN专家分和博客系统积分获得规则!
- 下一篇: beautifulsoup4
