AKAAKAKAKKAAKK…如果我們在鍵盤上打出一個AK串(只由字符A和K組成的固定位數的字符串),就可以AK全場么?
成都創(chuàng)新互聯(lián)公司服務項目包括云縣網站建設、云縣網站制作、云縣網頁制作以及云縣網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,云縣網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到云縣省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!不可以,有些AK串不允許出現!
現在給定整數n和m,n表示AK串的位數,m表示所有n位AK串中不允許出現的前綴,請輸出合法的n位AK串的個數。
題目大意分析:找出所有k位不包含指定AK子串的AK串個數我們可以把AK串看成一個二進制串,比如:AKAKAAKK=10101100
這里就是把A看成1,把K看成0(下面的代碼也是這樣定義的)
n位二進制串的個數是 2?
現在,我們就把問題拆成了幾個小問題:
2.如何判斷這個二進制串(也就是被處理后的AK串)是否包含不允許出現的AK串
第一個問題可以用一個函數解決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;//返回構造好的二進制串
}
第二個問題也是用一個函數解決(int check(int x){//判斷這個串里是否包含被禁止的子串
for(int i=1;i<=m;i++){int k=len[i];
int y=x&(((1<
然后就可以拼湊出整個程序了#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;//返回構造好的二進制
}
int check(int x){//判斷這個串里是否包含被禁止的子串
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轉成對應前綴的二進制
len[i]=s.size();
}
int ans=0;
int u=1<if(check(i)){//判斷i的前綴會不會被禁止
ans++;
}
}
cout<
完結撒花??ヽ(°▽°)ノ??
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧