题目地址:点击打开链接
一共15盏灯,每盏灯亮或不亮,一共就2^15种可能,所有的遍历一遍就可以了。
判断两个表达方式相不相同的时候用hash的方法,空间换时间。
#include#include #include #include #include #include using namespace std; const int maxsize = 33000; int isOn[maxsize][15]; vector vi; int N,P; string s[110]; int has[maxsize]; void init(int &num) { if(vi.size()==15) { for(int i=0;i<15;++i) isOn[num][14-i]=vi[i]; ++num; } else { vi.push_back(0); init(num); vi.pop_back(); vi.push_back(1); init(num); vi.pop_back(); } } int main() { int temp=0; init(temp); int cas; while(cin>>cas) { while(cas--) { cin>>P>>N; cin.get(); int i; for(i=0;i