几乎与1753一样。不过flip的时候,多加了一个判断,居然就超时了。。。。。用位运算的方法特别好,flip的操作特别快。不过没做View Code 1 #include <stdio.h> 2 bool handlers[5][5]; //false means closed, true means open 3 bool isflip[5][5]={false}; 4 int step; 5 void flip(int row,int col) 6 { 7 int i; 8 handlers[row][col]=!handlers[row][col]; 9 ... Read More
posted @ 2012-10-13 20:26
sidereal
Views(203)
Comments(0)
Diggs(0)
看成是一棵深度为16的树,每一个格子有两个状态,flip或non-flip,构成一棵二叉树。深搜这棵树就可以得到结果最少的轮数,可以给深搜加一条件: flip step次的时候,检查是否完成,step从0~16,这样就可以得到最少的轮数了。感觉可以用宽搜View Code 1 #include <stdio.h> 2 bool chess[5][5]; 3 int step; 4 void flip(int row,int col) 5 { 6 chess[row][col]=!chess[row][col]; 7 if(row-1>0) 8 chess[ro... Read More
posted @ 2012-10-13 19:44
sidereal
Views(156)
Comments(0)
Diggs(0)
真是不知道为什么,枚举的时候明明没有枚举全啊!选定一个最小bandwidth之后,只枚举了一种情况,然后就进入下一个bandwidth的循环了。比如最小带宽为80,后面有两个数据(85,100,2)和(86,50,2),这个时候循环就只会去枚举(85,100,2),不会去枚举(86,50,2),为啥这样也能通过呢。。。。。 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 using namespace std; 5 struct Device 6 { 7 int band Read More
posted @ 2012-10-13 15:34
sidereal
Views(167)
Comments(0)
Diggs(0)

浙公网安备 33010602011771号