博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 11210 (DFS) Chinese Mahjong
阅读量:5082 次
发布时间:2019-06-13

本文共 2208 字,大约阅读时间需要 7 分钟。

大白书第一章的例题,当时看起来很吃力,现如今A这道题的话怎么写都无所谓了。

思路很简单,就是枚举胡哪张牌,然后枚举一下将牌,剩下如果能找到4个顺子或者刻子就胡了。

由于粗心,34个字符串初始化写错,各种WA。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 int a[13], c[34]; 8 string s; 9 10 string mahjong[34] = { "1T", "2T", "3T", "4T", "5T", "6T", "7T", "8T", "9T",11 "1S", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S",12 "1W", "2W", "3W", "4W", "5W", "6W", "7W", "8W", "9W",13 "DONG", "NAN", "XI", "BEI", "ZHONG", "FA", "BAI" };14 15 int ID(string& maj)16 {17 for(int i = 0; i < 34; i++)18 if(mahjong[i] == maj) return i;19 return -1;20 }21 22 bool dfs(int d)23 {24 if(d == 4) return true;25 for(int i = 0; i < 34; i++) if(c[i] >= 3)26 {27 c[i] -= 3;28 if(dfs(d + 1)) return true;29 c[i] += 3;30 }31 for(int i = 0; i <= 24; i++) if(i % 9 <= 6 && c[i] && c[i + 1] && c[i + 2])32 {33 c[i] -= 1; c[i + 1] -= 1; c[i + 2] -= 1;34 if(dfs(d + 1)) return true;35 c[i] += 1; c[i + 1] += 1; c[i + 2] += 1;36 }37 return false;38 }39 40 bool check()41 {42 for(int i = 0; i < 34; i++) if(c[i] >= 2)43 {44 c[i] -= 2;45 if(dfs(0)) return true;46 c[i] += 2;47 }48 return false;49 }50 51 int main()52 {53 freopen("in.txt", "r", stdin);54 55 int kase = 0;56 while(cin >> s)57 {58 if(s[0] == '0') break;59 printf("Case %d:", ++kase);60 61 a[0] = ID(s);62 for(int i = 1; i <= 12; i++) { cin >> s; a[i] = ID(s); }63 64 bool ok = false;65 for(int i = 0; i < 34; i++)66 {67 memset(c, 0, sizeof(c));68 for(int j = 0; j < 13; j++) c[a[j]]++;69 if(c[i] >= 4) continue;70 c[i]++;71 if(check())72 {73 ok = true;74 printf(" %s", mahjong[i].c_str());75 }76 }77 if(!ok) printf(" Not ready");78 printf("\n");79 }80 81 return 0;82 }
代码君

 

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4446771.html

你可能感兴趣的文章
ionic2+ 基础
查看>>
互联网模式下我们更加应该“专注”
查看>>
myeclipse集成jdk、tomcat8、maven、svn
查看>>
查询消除重复行
查看>>
Win 10 文件浏览器无法打开
查看>>
HDU 1212 Big Number(C++ 大数取模)(java 大数类运用)
查看>>
-bash: xx: command not found 在有yum源情况下处理
查看>>
[leetcode]Minimum Path Sum
查看>>
内存管理 浅析 内存管理/内存优化技巧
查看>>
hiho1079 线段树区间改动离散化
查看>>
【BZOJ 5222】[Lydsy2017省队十连测]怪题
查看>>
第二次作业
查看>>
【input】 失去焦点时 显示默认值 focus blur ★★★★★
查看>>
Java跟Javac,package与import
查看>>
day-12 python实现简单线性回归和多元线性回归算法
查看>>
Json格式的字符串转换为正常显示的日期格式
查看>>
[转]使用 Razor 进行递归操作
查看>>
[转]Android xxx is not translated in yyy, zzz 的解决方法
查看>>
docker入门
查看>>
Android系统--输入系统(十一)Reader线程_简单处理
查看>>