摘要: 从下午比赛加写这道题写到现在,实在是眼冒金星了,特别是这道题,把我写惨了,一个小错找了半天啊,半天..而且,代码写的好烂..#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int n,m,a,b,flag,k;int on[105],off[105],lamp[105];struct node{ char s[105];}keep[100];int cmp(node ar,node br){ return strcmp(ar.s,br.s)<0;} 阅读全文
posted @ 2011-10-22 23:02 104_gogo 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 题目大意就是给出一个M,求比M大得最小的一个“循环数”例如:81362如果你从最左边的数字开始 ( 在这个例子中是8) 数最左边这个数字个数字到右边(回到最左边如果数到了最右边),你会停止在另一个新的数字(如果没有停在一个不同的数字上,这个数就不是循环数). 就像: 8 1 3 6 2 从最左边接下去数8个数字: 1 3 6 2 8 1 3 6 所以下一个数字是6重复这样做 (这次从“6”开始数6个数字) 并且你会停止在一个新的数字上: 2 8 1 3 6 2, 也就是2.再这样做 (这次数两个): 8 1再一次 (这次一个): 3又一次: 6 2 8 这是你回到了起点, 在从每一个数字开始数 阅读全文
posted @ 2011-10-22 19:45 104_gogo 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 按行搜,当到第i行时,判断对它选还是不选下面两种dfs是一样的#include <stdio.h>#include <string.h>int n,m,vis[305],ar[20][305];int match(){ int i; for (i=0;i<m;i++) { if(vis[i]!=1)return 0; } return 1;}int judge(){ int i; for (i=0;i<m;i++) { if(vis[i]>1)return 0; } return 1;}int dfs(int i){ int j,k; if (matc 阅读全文
posted @ 2011-10-22 12:38 104_gogo 阅读(244) 评论(0) 推荐(0) 编辑