POJ1053 Set Me
题目来源: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
S2PS O2GF
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 O1GS
2. S3GS D2GS O1GS CARDS: O2GF O1PF D2PO D3RO S2PO O1GF O1GS D2GO S3PF S2GF D2GS S1RS
SETS: *** None Found ***
暴力搜索即可。
//////////////////////////////////////////////////////////////////////////
// POJ1053 Set Me
// Memory: 228K Time: 0MS
// Language: C++ Result: Accepted
////////////////////////////////////////////////////////////////////////// #include <iostream> using namespace std; char cards[][]; //检查第p位是否符合条件
bool check_bit(int i, int j, int k, int p) {
if (cards[i][p] == cards[j][p] && cards[j][p] == cards[k][p]) {
return true;
}
if (cards[i][p] != cards[j][p] && cards[j][p] != cards[k][p]
&& cards[i][p] != cards[k][p]) {
return true;
}
return false;
} //检查第i、j、k张牌的组合能否构成set
bool check(int i, int j, int k) {
if (check_bit(i, j, k, ) && check_bit(i, j, k, )
&& check_bit(i, j, k, ) && check_bit(i, j, k, )) {
return true;
}
return false;
} int main(void) {
while (cin >> cards[]) {
for (int i = ; i < ; ++i) {
cin >> cards[i];
}
cout << "CARDS: " << cards[];
for (int i = ; i < ; ++i) {
cout << " " << cards[i];
}
cout << endl;
cout << "SETS: ";
int set_id = ;
for (int i = ; i < ; ++i) {
for (int j = i + ; j < ; ++j) {
for (int k = j + ; k < ; ++k) {
if (check(i, j, k)) {
if (set_id >= ) {
cout << " ";
}
cout << ++set_id << ". " << cards[i] << " "
<< cards[j] << " " << cards[k] << endl;
}
}
}
}
if (set_id == ) {
cout << "*** None Found ***" << endl;
}
cout << endl;
}
return ;
}
POJ1053 Set Me的更多相关文章
随机推荐
- 云服务利用Auto Scaling节省30%成本
公有云提供了很多免费的高级功能,很多中小用户以为自己用不上.实际上稍微研究一下,就能享受很多便利和节省不少成本. 本方案就是利用弹性伸缩(auto-scaling)减少服务器成本,几乎适合所有集群式部 ...
- 12-18Windows窗体应用小程序之记事本(1)
一.记事本制作(1) C#结合窗体制作小程序,相比较之前的控制台应用程序可能要改善了好多,最起码界面看起来可以高仿一下了,但是最重要的还是要看其里面的功能是否实现.所以,要以实现其实用功能为主.今天利 ...
- PLM数据库迁移注意事项
需求: PLM应用程序与数据库是存放在同一台服务器上,现需要将数据库迁移到数据库服务器10.10.1.10中. 10.10.1.10中安装了三个实例,MSSQLSERVER.MSSQLSERVER_P ...
- JVM实用参数(一)JVM类型以及编译器模式
JVM实用参数(一)JVM类型以及编译器模式 原文地址:https://blog.codecentric.de/en/2012/07/useful-jvm-flags-part-1-jvm-types ...
- day17-jdbc 6.Connection介绍
package cn.itcast.jdbc; import com.mysql.jdbc.Connection; import java.sql.DriverManager; import java ...
- 爬取google的搜索结果并保存
demo: #coding:utf- import requests from bs4 import BeautifulSoup import bs4 import re def getHTMLTex ...
- echarts柱状图每个柱子显示不同颜色,并且能够实现点击每种颜色影藏对应柱子的功能
---------------------------------------------------------代码区---------------------------------------- ...
- Linux shell实现阳历转农历
闲来无事,想在Linux下用shell写一个阳历转农历的脚本,断断续续大概一个星期终于搞定.现在拿出来与大家分享. 缘由 本脚本实现原理是查表法(因为公式有误差):基于农历新年为基准,对农历新年前后两 ...
- 第四章输入/输出(I/O)4.1I/O涉及的设备及相关概念简介
PCL中所有的处理都是基于点云展开的,利用不同的设备获取点云.存储点云等都是点云处理前后必须做的流程,PCL中有自己设计的内部PCD文件格式,为此,设计读写该该格式以及与其他3D文件格式之间进行转化的 ...
- 在centos上安装sequoaidb的php驱动
1:搭建PHP的运行环境 yum install httpd httpd-devel yum install php php-devel yum install php-gd php-imap p ...