【藍橋杯考前突擊】第十一屆藍橋杯校賽模擬C/C++ 正整數序列
問題描述
小明想知道,滿足以下條件的正整數序列的數量:
1. 第一項為 n;
2. 第二項不超過 n;
3. 從第三項開始,每一項小於前兩項的差的絕對值。
請計算,對於給定的 n,有多少種滿足條件的序列。
輸入格式
輸入一行包含一個整數 n。
輸出格式
輸出一個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。
樣例輸入
4
樣例輸出
7
樣例說明
以下是滿足條件的序列:
4 1
4 1 1
4 1 2
4 2
4 2 1
4 3
4 4
評測用例規模與約定
對於 20% 的評測用例,1 <= n <= 5;
對於 50% 的評測用例,1 <= n <= 10;
對於 80% 的評測用例,1 <= n <= 100;
對於所有評測用例,1 <= n <= 1000。
為什麼這幾天腦袋這麼好使
以前總是笨笨的
......
這個題一看就知道
絕對不能完全做出來
估計又得是dp之類的演算法了
反正也不會
來暴力一波
暴力的方式也很多
你喜歡哪種呢
我個人大多數情況下使用dfs
偶爾也會使用for,while之類的迴圈
這個題
我們們還是用dfs吧
經過20分鐘到30分鐘的斟酌
程式碼出來了
對於評測樣例的話
我試了試
20左右的數
完全可以規定時間出結果
意味著可以拿到一般分
開心啊
真希望腦袋一直這麼好使
#include<iostream>
#include<cmath>
using namespace std;
int n;
int ans;
void dfs(int last,int now){
//第三項以後使用搜尋的方式
//此方法難點在於何時結束
//經過斟酌,發現並不需要設定結束條件。只需要放置好ans位置即可
for(int i=1;i<=n;i++){
if(i<abs(now-last)){
//ans放在這裡是因為每往後走一步,但凡它滿足i<abs(now-last),它就是新的一項
//這也是從樣例觀察出來的,所以觀察樣例對解題也很重要,特別是這道題
ans++;
ans=ans%10000;
dfs(now,i);
}
}
}
int main(){
cin>>n;
//先確定第一項和第二項
for(int i=1;i<=n;i++){
dfs(n,i);
ans++;
ans=ans%10000;
}
cout<<ans<<endl;
return 0;
}
有問題可以留言交流٩(๑❛ᴗ❛๑)۶
相關文章
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 歷屆藍橋杯省賽(C、C++)的答案(轉)C++
- 第十三屆藍橋杯省賽C/C++ B組C++
- 第十三屆藍橋杯省賽A組
- 第14屆藍橋杯B組國賽
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 太陽(藍橋杯14屆)
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 藍橋杯javaB組備賽Java
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 【每週例題】藍橋杯 C++ 多數C++
- 藍橋杯-帶分數
- 藍橋杯 排序排序
- 第十四屆藍橋杯第一期模擬賽 pythonPython
- 藍橋杯-奪冠概率模擬(取隨機數)隨機
- 第九屆藍橋杯省賽C++A組 倍數問題(dfs)C++
- 藍橋杯 第三屆C/C++預賽真題(10) 取球遊戲(博弈)C++遊戲
- 藍橋杯大賽——驅動程式
- 第六屆藍橋杯省賽CC++B組C++
- 藍橋杯-波動數列
- 藍橋杯-合併數列
- 藍橋杯-N皇后
- 藍橋杯真題
- 藍橋盃賽前突擊
- 第十屆藍橋杯C++國賽B組部分題解(假題解)C++
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 第十五屆藍橋杯C++B組省賽總結C++
- 藍橋杯:基礎練習 查詢整數
- 第十五屆藍橋杯 網路安全賽道 ezjavaJava
- C++實現 藍橋杯 k倍區間C++
- 2013藍橋杯題解c組C++C++
- 藍橋杯-買不到的數目
- 藍橋杯-連號區間數
- 2017藍橋杯javaC組模擬題5Java
- 第十一屆藍橋杯大賽第二次模擬(軟體類)真題(做題筆記)筆記