uva-141-枚举
旋转过程的下标变化,画个2x2的表格,模拟就可以出来了
#include <string>
#include<iostream>
#include<map>
#include<memory.h>
#include<vector>
#include<algorithm> namespace cc
{
using std::cout;
using std::endl;
using std::cin;
using std::map;
using std::vector;
using std::string;
using std::sort; constexpr int N = 51; map<string, int> status;
int board[N][N]; int n;
string toString(int b[][N])
{
string str = "";
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
str += std::to_string(b[i][j]);
}
}
return str; } string xuanzhuan(int i)
{
int temp[N][N];
if (i == 0)
{
//顺时针90度
for (int i = 1, k = n; i <= n; i++, k--)
for (int j = 1; j <= n; j++)
temp[j][k] = board[i][j];
return toString(temp);
}
else if (i==1)
{
for (int i = 1, k = n; i <= n; i++, k--)
for (int j = 1; j <= n; j++)
temp[j][k] = board[i][j];
// 180
int temp2[N][N];
for (int i = 1, k = n; i <= n; i++, k--)
for (int j = 1; j <= n; j++)
temp2[j][k] = temp[i][j];
return toString(temp2);
}
else if (i==2)
{ for (int i = 1; i <= n; i++)//逆时针90度
for (int j = 1, k = n; j <= n; j++, k--)
temp[k][i] = board[i][j];
return toString(temp);
} } void solve()
{
while (cin>>n&&n)
{
memset(board,0,sizeof(board));
status.clear();
int r, c;
char op;
int ok = 0;
int play = 1;
int step = 0;
for (int i=1;i<=2*n;i++)
{
cin >> r >> c >> op;
if (op=='-')
{
//nazou
board[r][c] = 0;
}
else
{
board[r][c] = 1;
}
if(ok==0)
{
step=i;
play = i;
string str = "";
str = xuanzhuan(0);
if (ok==0&&status[str] == 1)
{
ok = 1;
}
str = xuanzhuan(1);
if (ok == 0 && status[str] == 1)
{
ok = 1;
}
str = xuanzhuan(2);
if (ok == 0 && status[str] == 1)
{
ok = 1;
}
str = toString(board);
if (ok == 0 && status[str] == 1)
{
ok = 1;
}
status[str] = 1;
}
}
if (ok == 0)
{
cout << "Draw" << endl;
}
else
{
cout << "Player " << (play % 2+1) << " wins on move " << step << endl;
}
}
} }; int main()
{ #ifndef ONLINE_JUDGE
freopen("d://1.text", "r", stdin);
#endif // !ONLINE_JUDGE
cc::solve(); return 0;
}
uva-141-枚举的更多相关文章
- UVa 12169 (枚举+扩展欧几里得) Disgruntled Judge
题意: 给出四个数T, a, b, x1,按公式生成序列 xi = (a*xi-1 + b) % 10001 (2 ≤ i ≤ 2T) 给出T和奇数项xi,输出偶数项xi 分析: 最简单的办法就是直接 ...
- UVa 140 (枚举排列) Bandwidth
题意较复杂,请参见原题=_=|| 没什么好说的,直接枚举每个排列就好了,然后记录最小带宽,以及对应的最佳排列. STL里的next_permutation函数真是好用. 比较蛋疼的就是题目的输入了.. ...
- UVa 1151 (枚举 + MST) Buy or Build
题意: 平面上有n个点,现在要把它们全部连通起来.现在有q个套餐,如果购买了第i个套餐,则这个套餐中的点全部连通起来.也可以自己单独地建一条边,费用为两点欧几里得距离的平方.求使所有点连通的最小费用. ...
- Even Parity UVA - 11464 (枚举)
从来没有觉得枚举有多费脑子的.但是这道题还是很香的. 思路:就是非常简单的枚举啦. 从一般的枚举开始考虑.一般的做法就是在所有的格子中有两种状态1, 0. 而一共有225个格子,所有一共要枚举的情 ...
- UVa 1354 枚举子集 Mobile Computing
只要枚举左右两个子天平砝码的集合,我们就能算出左右两个悬挂点到根悬挂点的距离. 但是题中要求找尽量宽的天平但是不能超过房间的宽度,想不到要怎样记录结果. 参考别人代码,用了一个结构体的vector,保 ...
- UVA 141 The Spot Game 斑点游戏。。
The Spot Game The game of Spot is played on an NxN board as shown below for N = 4. During the game ...
- Uva 11754(枚举+中国剩余定理)
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #inclu ...
- 【原创】项目三Raven-2
实战流程 1,C段扫描,并发现目标ip是192.168.186.141 nmap -sP 192.168.186.0/24 扫描目标主机全端口 nmap -p- 192.168.186.141 访问8 ...
- 10年省赛-Greatest Number (二分+暴力) + 12年省赛-Pick apples(DP) + UVA 12325(暴力-2次枚举)
题意:给你n个数,在里面取4个数,可以重复取数,使和不超过M,求能得到的最大的数是多少: 思路:比赛时,和之前的一个题目很像,一直以为是体积为4(最多选择四次)的完全背包,结果并不是,两两求和,然后二 ...
- UVa 10465 Homer Simpson (枚举)
10465 - Homer Simpson Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onli ...
随机推荐
- 【java】浅谈while 和do-while
while语法格式:while(布尔表达式){//语句}先判断布尔表达式,如果为true就会执行循环体中的语句,然后再判断布尔表达式,一直到布尔表达式为false,然后循环结束.通常用算术运算符(++ ...
- Python依赖打包发布详细
http://www.cnblogs.com/mywolrd/p/4756005.html 将Python脚本打包成可执行文件 Python是一个脚本语言,被解释器解释执行.它的发布方式: .py ...
- linux环境下python的pdb调试方法
一些常用指令: h(elp) [comman] #打印可用指令及帮助信息 r(eturn) #运行代码直到下一个断点或当前函数返回 b(reak) [[filename:]lineno | fun ...
- [Android] 配置build.gradle 动态传参
(1)一个Android工程中有一个build.gradle是负责Project范围的,而Module中又有各自的build.gradle是专门负责模块的. (2)在Gradle中Task是一等公民, ...
- 【优化】自定义抛出throw 对象练习
package ltb6w; import java.util.*; public class Bank { private boolean bool=true; private String sel ...
- Android开发之五大布局篇
一.Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 相对布局(RelativeLayout):相对其它组件的布局方式. 绝对布局 ...
- LinkedList的自定义实现
一.背景 LinkedList双向链表: 代码: Node.java: package com.cy.collection; public class Node { Node previous; // ...
- springboot(整合多数据源demo,aop,定时任务,异步方法调用,以及获取properties中自定义的变量值)
有这么一个需求 每个部门,需要操作的数据库不同,A部门要将数据放test数据库,B 部门数据 要放在test1数据库 同一个项目 需要整合 多个数据源 上传个demo 方便自己以后回看!!!!!!!! ...
- Kong网关介绍与安装小记
本文主要为kong安装小记,系统环境为centos 6.7 本文转载请注明出处 —— xiaoEight 介绍 Kong 是在客户端和(微 ...
- CentOS 7安装Oracle 11gR2以及设置自启动(1)
一.环境准备 1.正确无误的CentOS 7系统环境 虚拟机要求: 内存至少2G 处理器至少2个 根分区要大于20G(安装oracle很占空间,空闲空间要足够) 2.正确的JDK环境 CentOS 7 ...