Problem:2965 | User: qq1203456195 | |
Memory: 172K | Time: 47MS | |
Language: C | Result: Accepted |
#include <stdio.h> int Arr[16]= { 0xf888,0xf444,0xf222,0xf111, 0x8f88,0x4f44,0x2f22,0x1f11, 0x88f8,0x44f4,0x22f2,0x11f1, 0x888f,0x444f,0x222f,0x111f }; int Sln[16],idx_Sln; int M=0x0000; int i; void fun(int idx) { if (idx>=16) { if (M==0x0000) { printf("%d\n",idx_Sln); for (i=0;i<idx_Sln;i++) printf("%d %d\n",Sln[i]/4+1,Sln[i]%4+1); } return; } //not do fun(idx+1); //do M^=Arr[idx]; Sln[idx_Sln]=idx; idx_Sln++; fun(idx+1); M^=Arr[idx]; idx_Sln--; } int main() { char ch; i=20; while (i--) { scanf("%c",&ch); if (ch=='+') {M=M<<1;M^=1;}//Locked if (ch=='-') {M=M<<1;}//Open } fun(0); return 1; }
本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/04/12/2444448.html,如需转载请自行联系原作者