題意 給乙個3個n進製的有n個字母組成的序列,使第乙個數列和第二個數列加起來等於第三個數列的情況成立。
蒟蒻調了一上午+半下午 感覺我碼力極差
考慮乙個剪枝,比如a,b,c的情況,要麼是(a+b)%n=c,要麼是(a+b+1)%n=c(考慮了進製)
** 感覺我打麻煩了 其實不太適合參考
#include#include#include#includeusing namespace std;
const int n=50;
int id[n],id_map[n],x;
char a[n],b[n],c[n];
void dfs(int n,int now)for(int i=1;i<=n;i++)
if(id[a[n]-'a']<0)
if(id_map[i]) continue;
id[a[n]-'a']=i;id_map[i]=1;
if(id[b[n]-'a']<0)
for(int j=0;j<=x-1;j++)
id_map[j]=1;if(id_map[(i+j+now)%x]&&id[c[n]-'a']<0)
if(id[c[n]-'a']<0)else
}else
if(id_map[(i+j+now)%x]&&id[c[n]-'a']<0)
if(id[c[n]-'a']<0)else
}id[a[n]-'a']=-1;id_map[i]=0;
} }else
id_map[j]=1;if(id_map[(i+j+now)%x]&&id[c[n]-'a']<0)
if(id[c[n]-'a']<0)else
}elseelse
} }
}int main()
搜尋 蟲食算
p1135 蟲食算 noip 時間限制 10000 ms 空間限制 65536 kb 問題描述 所謂蟲食算,就是原先的算式中有一部分被蟲子啃掉了,需要我們根據剩下的數字來判定被啃掉的字母。來看乙個簡單的例子 43 9865 045 8468 6633 44445506978 其中 號代表被蟲子啃掉的...
noip 蟲食算 搜尋
描述 所謂蟲食算,就是原先的算式中有一部分被蟲子啃掉了,需要我們根據剩下的數字來判定被啃掉的字母。來看乙個簡單的例子 43 9865 045 8468 6633 44445506678 其中 號代表被蟲子啃掉的數字。根據算式,我們很容易判斷 第一行的兩個數字分別是5和3,第二行的數字是5。現在,我們...
NOIP2004提高組 蟲食算(搜尋剪枝)
30pts 善用next permutation 50pts 先列舉每一位是否有進製,設進製為di 0 1,然後a i b i d i 1 10d i c i 移項後為a i b i c i 10d i d i 1 n位形成n個方程組,可以進行高斯消元,時間複雜度o 2 n n 3 100pts 高...