ZOJ-1130
来源:互联网 发布:selfie city照相软件 编辑:程序博客网 时间:2024/05/21 06:43
我去,被这题搞死了,写了我一晚上,蛋疼无比,总感觉一到细节的地方特别是涉及到数组下标计算的地方就不敢轻易下手写。。目测耗时近三小时。。无语,完全不在状态啊。。题目的话核心就是DFS一个符合题意的串,先把表打出来,然后根据输入查下
#include<cstdio>#include<string>#include<vector>#include<cstring>#include<map>using namespace std;namespace{bool flag[1 << 15], find;map<int, vector<bool> > M;int number(vector<bool> &V, int n, int last){int res = 0;for (size_t i = V.size() - n + 1; i < V.size(); i++){res <<= 1;res |= V[i] ? 1 : 0;}res <<= 1;res |= last;return res;}int circle(vector<bool> &V, int n, size_t count){int res = 0;for (size_t i = V.size() - n + count; i < V.size(); i++){res <<= 1;res |= V[i] ? 1 : 0;}for (size_t i = 0; i < count; i++){res <<= 1;res |= V[i] ? 1 : 0;}return res;}void dfs(vector<bool> &V, int depth, int n, int len){if (find)return;if (depth == len){for (int i = 1; i < n; i++){int num = circle(V, n, i);if (flag[num])return;}find = true;M[n] = V;return;}for (int i = 0; i < 2; i++){int num = number(V, n, i);if (!flag[num]){V.push_back(i);flag[num] = true;dfs(V, depth + 1, n, len);flag[num] = false;V.pop_back();}}}}int main(){vector<bool> V;for (int i = 1; i < 16; i++){V.clear();memset(flag, 0, sizeof(flag));for (int j = 0; j < i; j++)V.push_back(0);flag[0] = true;find = false;dfs(V, i, i, 1 << i);}int n, k;while (scanf("%d%d", &n, &k), n || k){vector<bool> &v = M[n];int res = 0;for (int i = k; i < k + n; i++){res <<= 1;res |= v[i % v.size()] ? 1 : 0;}printf("%d\n", res);}return 0;}
0 0
- ZOJ-1130
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- 对vc6.0平台运行Debug的程序出现:应用程序无法正常启动(0xc0150002).请单击“确定”关闭应用程序
- Flare-On Challenge1 Writeup
- 详解EBS接口开发之WIP模块接口
- 【JavaScript 学习】没啥参考价值,纯记录,来自w3school
- 笔试题
- ZOJ-1130
- 用keytool生成证书
- POI操作Excel详解,HSSF和XSSF两种方式
- 项目实施阶段该做好哪些方面的工作
- 背景实现颜色渐变
- 【搜索-BFS】逃离迷宫
- MQ队列管理器
- 【并查集】HDU 1325 Is It A Tree?
- asp.net 页面初级介绍2DataBind()技术