POJ 1166 The Clocks (暴搜)
发现对这样的模拟题根本没啥思路了,本来准备用bfs的。可是结果超时了,这是參考别的人代码写的:
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <math.h>
#include <string.h>
#include <queue>
#include <string>
using namespace std; int main()
{
int a[10],b[10],c[10];
freopen("1166.in","r",stdin);
for(int i = 1; i <= 9; i++)
scanf("%d",&a[i]);
for(b[9]=0;b[9]<=3;++b[9])
for(b[8]=0;b[8]<=3;++b[8])
for(b[7]=0;b[7]<=3;++b[7])
for(b[6]=0;b[6]<=3;++b[6])
for(b[5]=0;b[5]<=3;++b[5])
for(b[4]=0;b[4]<=3;++b[4])
for(b[3]=0;b[3]<=3;++b[3])
for(b[2]=0;b[2]<=3;++b[2])
for(b[1]=0;b[1]<=3;++b[1])
{
c[1]=(a[1]+b[1]+b[2]+b[4])%4;//钟1的状态
c[2]=(a[2]+b[1]+b[2]+b[3]+b[5])%4;//钟2的状态
c[3]=(a[3]+b[2]+b[3]+b[6])%4;//钟3的状态
c[4]=(a[4]+b[1]+b[4]+b[5]+b[7])%4;//钟4的状态
c[5]=(a[5]+b[1]+b[3]+b[5]+b[7]+b[9])%4;//钟5的状态
c[6]=(a[6]+b[3]+b[5]+b[6]+b[9])%4;//钟6的状态
c[7]=(a[7]+b[4]+b[7]+b[8])%4;//钟7的状态
c[8]=(a[8]+b[5]+b[7]+b[8]+b[9])%4;//钟8的状态
c[9]=(a[9]+b[6]+b[8]+b[9])%4;//钟9的状态
if(c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]==0)//所有就位
{
for(int i=0;i<b[1];++i)printf("1 ");
for(int i=0;i<b[2];++i)printf("2 ");
for(int i=0;i<b[3];++i)printf("3 ");
for(int i=0;i<b[4];++i)printf("4 ");
for(int i=0;i<b[5];++i)printf("5 ");
for(int i=0;i<b[6];++i)printf("6 ");
for(int i=0;i<b[7];++i)printf("7 ");
for(int i=0;i<b[8];++i)printf("8 ");
for(int i=0;i<b[9];++i)printf("9 ");
printf("\n");
}
}
}
由于是
1 ABDE 2 ABC 3 BCEF 4 ADG 5 BDEFH 6 CFI 7 DEGH 8 GHI 9 EFHI
那么对于第一个钟来说,可以让他状态变化的是操作1和2和4,别的钟类似作法。
从而枚举全部操作,并且这里每一个操作不会超过4次。由于四次后跟0次的效果是一样的。
POJ 1166 The Clocks (暴搜)的更多相关文章
- POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...
- Poj 1166 The Clocks(bfs)
题目链接:http://poj.org/problem?id=1166 思路分析:题目要求求出一个最短的操作序列来使所有的clock为0,所以使用bfs: <1>被搜索结点的父子关系的组织 ...
- POJ 1167 The Buses 暴搜+剪枝
思路: 先把能选的路线都预处理出来 按照能停的车的多少排个序 (剪枝1) 搜搜搜 如果当前剩的车÷当前能停车的多少+deep>=ans剪掉 (剪枝2) //By SiriusRen #inclu ...
- POJ 1166 The Clocks
高斯消元法第四个冠军,这个称号是非常令人兴奋~~ 题目大意: 给出9个钟表的状态.给出九种操作,问最少要操作几次能把全部的钟表调回12点. 解题思路: 对于9个钟表分别列方程,然后高斯消元就可以.因为 ...
- POJ 1166 The Clocks 高斯消元 + exgcd(纯属瞎搞)
依据题意可构造出方程组.方程组的每一个方程格式均为:C1*x1 + C2*x2 + ...... + C9*x9 = sum + 4*ki; 高斯消元构造上三角矩阵,以最后一个一行为例: C*x9 = ...
- poj 1543 Perfect Cubes (暴搜)
Perfect Cubes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 15302 Accepted: 7936 De ...
- POJ 1166 The Clocks [BFS] [位运算]
1.题意:有一组3*3的只有时针的挂钟阵列,每个时钟只有0,3,6,9三种状态:对时针阵列有9种操作,每种操作只对特点的几个时钟拨一次针,即将时针顺时针波动90度,现在试求从初试状态到阵列全部指向0的 ...
- poj 3080 Blue Jeans(水题 暴搜)
题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...
- POJ 1945 暴搜+打表 (Or 暴搜+判重)
思路: 呃呃 暴搜+打表 暴搜的程序::稳稳的TLE+MLE (但是我们可以用来打表) 然后我们就可以打表过了 hiahiahia 可以证明最小的那个数不会超过200(怎么证明的我也不知道),然后就直 ...
随机推荐
- D - Garden
Problem description Luba thinks about watering her garden. The garden can be represented as a segmen ...
- Visual Studio切换界面显示语言
[工具]-[选项]-[环境]-[区域设置]-[语言]-[获取其他语言] 安装后重启即可.
- CDN 内容分发网络
第一步,HTML的文件引用:HTML的文件头(也有文件中,文件尾)那边常有其他文件引用,比如CSS以及JS的引用. 就以bootstrap常用的引用来举个栗子你常见的引用可能会是这样的: <he ...
- Multipart/form-data POST文件上传
简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form method="post"action=&qu ...
- mySQL用代码添加表格内容 删除数据方法
通过代码对表格内容操作: 1.添加数据insert into Info values('p009','张三',1,'n001','2016-8-30 12:9:8') ; 给特定的列添加数据inser ...
- C#关闭退出线程的几种方法
.Application.Exit(); //强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出: .System.Environment.Exit(); //无论在主线 ...
- python 上手
1.安装模块 cmd---“pip install [模块名]” 2.爬虫常用模块 requests beautifulsoup4 3.检查已安装的模块 cmd ---"pip list&q ...
- Redmine使用指南
公司之前使用JIRA登bug,但是客户在美国,他们习惯于用Redmine登bug,所以我们也开始在Redmine登bug,找来一个比较全面的Redmine使用指南,不懂时直接查看. http://bl ...
- 我的C++笔记(数据的共享与保护)
*数据的共享与保护: * .作用域: * 作用域是一个标识符在程序正文中有效的区域.C++中标识符的作用域有函数原型作用域.局部作用域(块作用域).类作用域和命名空间作用域. * ().函数原型作用域 ...
- react基础篇一
jsx简介 const element = <h1>Hello, world!</h1>; 这种看起来可能有些奇怪的标签语法既不是字符串也不是 HTML. 它被称为 JSX, ...