題目描述:
小明正在學習一種新的程式語言 a++,剛學會迴圈語句的他激動地寫了好多程式並 給出了他自己算出的時間複雜度,可他的程式設計老師實在不想乙個乙個檢查小明的程式, 於是你的機會來啦!下面請你編寫程式來判斷小明對他的每個程式給出的時間複雜度是否正確。
a++語言的迴圈結構如下:
f i x y
迴圈體e
其中f i x y
表示新建變數 ii(變數 ii 不可與未被銷毀的變數重名)並初始化為 xx, 然後判斷 ii 和 yy 的大小關係,若 ii 小於等於 yy 則進入迴圈,否則不進入。每次迴圈結束後 ii 都會被修改成 i +1i+1,一旦 ii 大於 yy 終止迴圈。
xx 和 yy 可以是正整數(xx 和 yy 的大小關係不定)或變數 nn。nn 是乙個表示資料規模的變數,在時間複雜度計算中需保留該變數而不能將其視為常數,該數遠大於 100100。
「e」表示迴圈體結束。迴圈體結束時,這個迴圈體新建的變數也被銷毀。
注:本題中為了書寫方便,在描述複雜度時,使用大寫英文本母「o」表示通常意義下「θ」的概念。
題解:大模擬,坑點不少。。。
附上**:
#include#include#define m(k) memset(k,0,sizeof(k))int t,k,cnt,kpl2,bin[101],flag,idx,flag2,z2,cnt2[101],m,flag3,idx2,y,x,idx5,idx3,max,kpl,cnt3,cnt4[101],idx4;
char a[5],b[5],c[5],d[5],e[5],f[5];
intmain()
for(int i=1;i<=k;i++)
if(d[0]=='n'&&i==1)
kpl=1;
}elsekpl2=1;
f[++idx2]=c[0],cnt++,cnt3=0;
}if(b[0]=='e')
elsez2=0;
if(z!=0&&cnt!=0)
m=1;
}if(cnt==0)}}
for(int i=1;i<=idx3;i++)
if(maxmax=cnt2[i];
if(flag3==0)
else
} } }
}
洛谷P3952 時間複雜度
小明正在學習一種新的程式語言 a 剛學會迴圈語句的他激動地寫了好多程式並 給出了他自己算出的時間複雜度,可他的程式設計老師實在不想乙個乙個檢查小明的程式,於是你的機會來啦!下面請你編寫程式來判斷小明對他的每個程式給出的時間複雜度是否正確。a 語言的迴圈結構如下 f i x y 迴圈體e其中f i x...
洛谷P3952 時間複雜度 模擬
題目鏈結 咕了一年的題解。就是個模擬吧 考場上寫的遞迴也是醉了。感覺一年自己進步了不少啊。面向資料程式設計的能力提高了不少 include define fi first define se second define mp make pair using namespace std const i...
洛谷 P3952 時間複雜度 模擬
這個模擬,注意每次進入迴圈的時候把新狀態全部入棧,退出迴圈的時候就退棧。第一次就錯在發現err退出太及時,把剩餘的資訊留在流裡面。includeusing namespace std typedef long long ll void solve 變數進棧的順序 stackchs 被占用的變數的標記...