博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
枚举之三
阅读量:4920 次
发布时间:2019-06-11

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

//sicily 1048. Inverso //由于方格翻转两次就相当没有翻转,所以翻转的次数只可能取0,1,要么没翻,要么翻1次, //这样初始状态为"wwwwwwwww",我们可以计算出每种翻转可能组合的结果,比如翻转 2459 后变成 bbwbwbwbw,那我们可以标记 bbwbwbwbw 的答案为 2459 //对于sample中的 bbwbwbwbw ,可以直接输出 2459 .因为 wwwwwwwww 经翻转 2459 后变成 bbwbwbwbw,那么 bbwbwbwbw 再经翻转 2459 后就变成 wwwwwwwww (翻转两次相当于没翻) #include
//数据量小,直接枚举 #include
#include
#include
using namespace std; int mov[10][10]={
{},{
1,2,4,5},{
1,2,3,4,5,6},{
2,3,5,6},{
1,2,4,5,7,8},{
1,2,3,4,5,6,7,8,9},{
2,3,5,6,8,9},{
4,5,7,8},{
4,5,6,7,8,9},{
5,6,8,9}}; int mov_len[10]={
0,4,6,4,6,9,6,4,6,4}; int state[10]; int to_num() //对state离散化 {
int s=0; for(int i=1;i<=9;++i) s+=pow(2.0,double(i-1))*state[i]; return s; } vector
res[1000]; int main() {
int ans[10]; for(ans[1]=0;ans[1]<=1;++ans[1]) for(ans[2]=0;ans[2]<=1;++ans[2]) for(ans[3]=0;ans[3]<=1;++ans[3]) for(ans[4]=0;ans[4]<=1;++ans[4]) for(ans[5]=0;ans[5]<=1;++ans[5]) for(ans[6]=0;ans[6]<=1;++ans[6]) for(ans[7]=0;ans[7]<=1;++ans[7]) for(ans[8]=0;ans[8]<=1;++ans[8]) for(ans[9]=0;ans[9]<=1;++ans[9]) {
memset(state,0,sizeof(state)); for(int i=1;i<=9;++i) if(ans[i]==1) {
for(int j=0;j
>cases; while(cases--) { cin>>ch; if(strcmp(ch,"wwwwwwwww")==0) //注意输入为"wwwwwwwww"的情况 { cout<<"11\n"; continue; } for(int i=0;i<9;++i) state[i+1]=(ch[i]=='w'?0:1); int id=to_num(); for(int i=0;i

  

转载于:https://www.cnblogs.com/mjc467621163/archive/2011/08/23/2150995.html

你可能感兴趣的文章
怎么解决svn清理失败且路径显示乱码问题
查看>>
python学习 第一天 python基础
查看>>
(转)eclipse下配置tomcat7的几个重要问题,值得一看
查看>>
浅谈对存储过程的理解:什么是存储过程,及它的优点等!
查看>>
Java生鲜电商平台-购物车模块的设计与架构
查看>>
HTML5 隐藏地址栏 兼容IOS 与安卓
查看>>
【ElementUI】日期选择器时间选择范围限制
查看>>
JNI和NDK
查看>>
java并发 —— Lock
查看>>
Docker中配置MySQL并实现远程访问
查看>>
C# 反射创建对象,包括创建引用外部程序集类的实例
查看>>
WPF Demo3
查看>>
ubuntu 16.04 sudo nopasswd
查看>>
php xmlreader simplexml等读取xml
查看>>
密钥体系
查看>>
Android学习第十九天----post请求数据解析
查看>>
Solution 13: 链表的倒数第K个节点
查看>>
正则表达式——替换
查看>>
用ASP.NET Web API技术开发HTTP接口(二)
查看>>
MATLAB GUI不同控件函数间变量传递方法
查看>>