POJ1053 Set Me
2024-05-16 12:13:29
题目来源:http://poj.org/problem?id=1053
题目大意:
有一种牌,共有81张。每张牌有四个属性,每种属性有三种可能取值:形状(D,O,S),数字(1,2,3),颜色(R,G,P),纹理(O,F,S)。如果三张牌的的任意一种属性都满足:三张牌的该属性值均相同或各不相同,则成这三张牌可以构成一个set。给出12张牌的所有属性值,求该组牌中是所有set。
输入:由若干组数据组成。每组十二行,每行表示一张牌的属性值。不同组数据之间用空格隔开。
输出:先输出所有的牌,然后依次输出找到的set,若找不到则输出“*** None Found ***”。不同样例之间用空格隔开。具体格式见sample。
Sample Input
S1PS D3PO S2GF O2GS O2GF O3PO S2RF S3GS D2GS O1GS O1GF S2PSO2GF O1PF D2PO D3RO S2PO O1GF O1GS D2GO S3PF S2GF D2GS S1RS
Sample Output
CARDS: S1PS D3PO S2GF O2GS O2GF O3PO S2RF S3GS D2GS O1GS O1GF S2PS SETS: 1. D3PO S2RF O1GS2. S3GS D2GS O1GSCARDS: O2GF O1PF D2PO D3RO S2PO O1GF O1GS D2GO S3PF S2GF D2GS S1RS SETS: *** None Found ***
暴力搜索即可。
![](/assets/blank.gif)
![](/assets/blank.gif)
1 // 2 // POJ1053 Set Me 3 // Memory: 228K Time: 0MS 4 // Language: C++ Result: Accepted 5 // 6 7 #include <iostream> 8 9 using namespace std; 10 11 char cards[12][5]; 12 13 //检查第p位是否符合条件 14 bool check_bit(int i, int j, int k, int p) { 15 if (cards[i][p] == cards[j][p] && cards[j][p] == cards[k][p]) { 16 return true; 17 } 18 if (cards[i][p] != cards[j][p] && cards[j][p] != cards[k][p] 19 && cards[i][p] != cards[k][p]) { 20 return true; 21 } 22 return false; 23 } 24 25 //检查第i、j、k张牌的组合能否构成set 26 bool check(int i, int j, int k) { 27 if (check_bit(i, j, k, 0) && check_bit(i, j, k, 1) 28 && check_bit(i, j, k, 2) && check_bit(i, j, k, 3)) { 29 return true; 30 } 31 return false; 32 } 33 34 int main(void) { 35 while (cin >> cards[0]) { 36 for (int i = 1; i < 12; ++i) { 37 cin >> cards[i]; 38 } 39 cout << "CARDS: " << cards[0]; 40 for (int i = 1; i < 12; ++i) { 41 cout << " " << cards[i]; 42 } 43 cout << endl; 44 cout << "SETS: "; 45 int set_id = 0; 46 for (int i = 0; i < 12; ++i) { 47 for (int j = i + 1; j < 12; ++j) { 48 for (int k = j + 1; k < 12; ++k) { 49 if (check(i, j, k)) { 50 if (set_id >= 1) { 51 cout << " "; 52 } 53 cout << ++set_id << ". " << cards[i] << " " 54 << cards[j] << " " << cards[k] << endl; 55 } 56 } 57 } 58 } 59 if (set_id == 0) { 60 cout << "*** None Found ***" << endl; 61 } 62 cout << endl; 63 } 64 return 0; 65 }
View Code
转载于:https://www.cnblogs.com/dengeven/p/3259513.html
POJ1053 Set Me相关推荐
- 大量ACM/ICPC书籍与网站资源
算法丛书分享 1.Concrete Mathematics --- A Foundation For Computer Science Ronald L. Graham , Donald E. Knu ...
最新文章
- java中自然排序和比较器排序
- OGEngine基于java支持跨平台的手游开发开源引擎
- 关于 SAP Spartacus low level Component的customization
- python赋予x新值_快速为 Python 字典设置新的值
- java joda 获取utc时间_java – JodaTime – 如何获取UTC的当前时间
- Windows server 2012 r2更新
- linux 日志清理
- hydra-字典暴力破解
- PHP 纯汉字包括生僻字的验证方式
- day21、3 - 防火墙HA
- Pubwin EP 正式版完整安装全程-数据备份
- 首师大附中科创教育平台 我的刷题记录 0325 50212228海岛帝国:LYF的太空运输站...
- 火鸟门户系统 5.7 正式版
- i春秋 WEB fuzzing
- Python3,3行代码,自动为脚本生成命令行,我默默的收藏了。
- 〖Python自动化办公篇⑯〗 - PPT 文件自动化 - PPT 段落的使用
- 排列计算公式,公式含义
- 蓝桥杯备考心得,要言不烦,字字珠玑
- Excel技巧1:将符合要求的多个单元格内容合并到一个单元格
- (六) 语言模型 Language Madel 与 word2vec
热门文章
- 小孩儿学计算机可以学些什么,基础知识
- Halcon 入门教程(01)
- bat窗口大小设置_dos命令发出声音图文教程,电脑音箱喇叭蜂鸣器滴,bat批处理脚本...
- 清明上河图 HTML 代码
- 2022年新版千月影视APP带H5功能的源码-亲测好用
- 千月双端影视app源码 后端是Thinkphp
- android 上位机下位机串口通讯,上位机下位机串口通信.doc
- 认识电脑键盘附加快捷键
- linux运行程音乐软件,在Linux系统下用Wine 5.0运行酷狗音乐的使用体验
- hightopo六面体贴图