vijos P1197 费解的开关 题解
来源:互联网 发布:js面包屑导航代码 编辑:程序博客网 时间:2024/05/21 17:56
#include <stdio.h>#include <stdlib.h>#define STATUS 0#define STEP 1int queue[1000000][2];int answer[1<<25];int head = 0, tail = 0;void addToQueue(int status, int step){ queue[tail][STATUS] = status; queue[tail][STEP] = step; answer[status] = step; tail++;}int main(){ char line[10]; int numQuery, i, j, k, step, status; for(i=0; i<(1<<25); i++) answer[i] = -1; addToQueue((1<<25)-1, 0); //all lights up while(head < tail){ status = queue[head][STATUS]; step = queue[head][STEP]; if(step < 6){ for(i=0; i<25; i++){ k = status; // generate new status k ^= 1<<i; //itself if(i%5 != 0) k ^= 1<<(i-1); //left if(i%5 != 4) k ^= 1<<(i+1); //right if(i/5 != 0) k ^= 1<<(i-5); //up if(i/5 != 4) k ^= 1<<(i+5); //down if(answer[k] == -1) addToQueue(k, step+1); } } head++; } scanf("%d", &numQuery); for(i=0; i<numQuery; i++){ status = 0; for(j=0; j<5; j++){ scanf("%s", line); for(k=0; k<5; k++){ status <<= 1; status |= line[k]-'0'; } } printf("%d\n", answer[status]); } return 0;}
1 0
- vijos P1197 费解的开关 题解
- vijos 1197 费解的开关 反向bfs+位运算
- tyvj P1266 费解的开关
- 南邮 OJ 1570 费解的开关
- 【BZOJ】【P1197】【HNOI2006】【花仙子的魔法】【题解】【DP】【庆祝月考结束】
- vijos题解--我是打饭的
- VIJOS-P1066 弱弱的战壕题解
- 费解的NTDLL断点
- JS 费解的错误:
- 费解的问题
- 费解的NTDLL断点
- 费解的c++
- 费解
- Vijos p1052 题解
- 区间 (vijos 1439) 题解
- 【Vijos P1007】绕钉子的长绳子 c++题解
- vijos P1597 2的幂次方 题解(递归)
- 二分猜+回溯 Vijos P1197 切割网线(。。。跪着打完了这题QWQ)
- conflicting types for xx错误
- jquery form表单提交成功,回调方法
- ZeroClipboard js复制文本(兼容全部浏览器)
- Oracle未正确关闭引起的问题
- 转:IOS工程适配64-BIT 经验分享
- vijos P1197 费解的开关 题解
- 英文名Tyron的起始
- spring batch 2: 搭建环境以及简单的Job
- [Linux]常用Linux命令小结(持续更新中)
- LinearLayout 动态添加TextView控件
- 2.3日,重新开始学习,记录学习成果
- Virtualized bridged networking with MacVTap
- Ninja自己的技术栈
- 51nod1419 lcm,规律