vijos P1197 费解的开关 题解
2016-02-03 13:08
393 查看
4000
#include <stdio.h> #include <stdlib.h> #define STATUS 0 #define STEP 1 int 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; }
相关文章推荐
- jquery form表单提交成功,回调方法
- 英文名Tyron的起始
- Xcode7使用插件的简单方法&&以及怎样下载到更早版本的Xcode
- Oracle未正确关闭引起的问题
- ZeroClipboard js复制文本(兼容全部浏览器)
- conflicting types for xx错误
- [C++]Hanoi
- Android性能优化系列---管理你的app内存(一)
- objective c 函数声明
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) B. Guess the Permutation 水题
- 转:iOS应用如何实现64位的支持
- 最新 AFNetworking 3.0 简单实用封装
- Slickflow.NET 开源工作流引擎基础介绍(三) -- 基于HTML5/Bootstrap的Web流程设计器
- 从交互设计浅谈安卓开发有多痛苦,安卓程序员才最值得尊重
- Linux 下增大tomcat内存
- 淘宝分布式文件存储系统:TFS
- 【转载】我们本可以无师自通的做好期货
- centos7安装gitlab
- linux 查看 设置 网卡接口 混杂模式
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) A. Slime Combining 水题