AKAAKAKAKKAAKK…如果我們?cè)阪I盤上打出一個(gè)AK串(只由字符A和K組成的固定位數(shù)的字符串),就可以AK全場(chǎng)么?
不可以,有些AK串不允許出現(xiàn)!
現(xiàn)在給定整數(shù)n和m,n表示AK串的位數(shù),m表示所有n位AK串中不允許出現(xiàn)的前綴,請(qǐng)輸出合法的n位AK串的個(gè)數(shù)。
題目大意分析:找出所有k位不包含指定AK子串的AK串個(gè)數(shù)我們可以把AK串看成一個(gè)二進(jìn)制串,比如:AKAKAAKK=10101100
這里就是把A看成1,把K看成0(下面的代碼也是這樣定義的)
n位二進(jìn)制串的個(gè)數(shù)是 2?
現(xiàn)在,我們就把問題拆成了幾個(gè)小問題:
2.如何判斷這個(gè)二進(jìn)制串(也就是被處理后的AK串)是否包含不允許出現(xiàn)的AK串
第一個(gè)問題可以用一個(gè)函數(shù)解決int tran(string s){int len=s.size();
int num=0;
for(int i=0;inum<<=1;
if(s[i]=='A') {//A為1,K為0
num+=1;
}
}
num<<=(n-len);//除了1以外的字符都是K也就是0
return num;//返回構(gòu)造好的二進(jìn)制串
}
第二個(gè)問題也是用一個(gè)函數(shù)解決(int check(int x){//判斷這個(gè)串里是否包含被禁止的子串
for(int i=1;i<=m;i++){int k=len[i];
int y=x&(((1<
然后就可以拼湊出整個(gè)程序了#includeusing namespace std;
int n,m;
int ft[20],len[20];
int tran(string s){int len=s.size();
int num=0;
for(int i=0;inum<<=1;
if(s[i]=='A') {//A為1,K為0
num+=1;
}
}
num<<=(n-len);//除了1以外的字符都是K也就是0
return num;//返回構(gòu)造好的二進(jìn)制
}
int check(int x){//判斷這個(gè)串里是否包含被禁止的子串
for(int i=1;i<=m;i++){int k=len[i];
int y=x&(((1<string s;
cin>>n>>m;
for(int i=1;i<=m;i++){cin>>s;
ft[i]=tran(s);//將AK串s轉(zhuǎn)成對(duì)應(yīng)前綴的二進(jìn)制
len[i]=s.size();
}
int ans=0;
int u=1<if(check(i)){//判斷i的前綴會(huì)不會(huì)被禁止
ans++;
}
}
cout<
完結(jié)撒花??ヽ(°▽°)ノ??
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
新聞標(biāo)題:AK串II題解(愛思創(chuàng)平臺(tái))-創(chuàng)新互聯(lián)
分享URL:http://m.newbst.com/article8/dcsgop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站排名、關(guān)鍵詞優(yōu)化、網(wǎng)站改版、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容