ccf多少分,CCF NOI1072 爬樓梯

 2023-10-08 阅读 16 评论 0

摘要:問題鏈接:CCF NOI1072 爬樓梯。 時間限制: 1000 ms ?空間限制: 262144 KB 題目描述? ccf多少分?? 樹老師爬樓梯,他可以每次走1級或者2級,輸入樓梯的級數,求不同的走法數。例如:樓梯一共有3級,他可以每次都走一級,或者第一

問題鏈接:CCF NOI1072 爬樓梯




時間限制: 1000 ms ?空間限制: 262144 KB

題目描述?

ccf多少分?? 樹老師爬樓梯,他可以每次走1級或者2級,輸入樓梯的級數,求不同的走法數。例如:樓梯一共有3級,他可以每次都走一級,或者第一次走一級,第二次走兩級,也可以第一次走兩級,第二次走一級,一共3種方法。

輸入

? 輸入包含若干行,每行包含一個正整數N(1<=N<=30),代表樓梯級數。

輸出

? 不同的走法數,每一行輸入對應一行輸出。

ccf2021,樣例輸入

5

8

10

樣例輸出

ccf300分什么水平。8

34

89

數據范圍限制

? 1<=N<=30

封閉式樓梯、



問題分析

? 這是一個遞推的問題。站在樓梯的第n級想一下,前一步是從哪里來的,問題就清楚了。

? 由于每次只能上一級或兩級,那么f(n)=f(n-2)+f(n-1)。這不就是一個菲波拉契數列嗎?就是一個遞推問題?

雙步梯高層建筑圖畫樓梯結構圖。? 可是,開始時候是站在第1級臺階上,所以數列的開始幾項會有所不同。

? f(1)=0,因為開始就站在第1級臺階上;

? f(2)=1,只能從第1級臺階上1級;

? f(3)=2,只能從第1級臺階上2級,或只能從第2級臺階上1級;

? f(n)=f(n-2)+f(n-1),n>3。

高層建筑消防樓梯的設計要求,? 得到上述遞推關系后,便可以寫了一個函數來計算f(n)。

? 測試用例可能很多,所以必須打表。

程序說明

? 函數setstairs()計算數列的各個項存儲在數組stairs[]中備用,函數是用遞推來實現。

要點詳解
  • 用函數封裝功能是一個好的做法
  • 能用遞推就不用遞歸,遞歸的代碼邏輯往往比遞推要簡潔,但是通常時間上要慢并且需要更多的存儲。
  • 重復多次使用計算函數值時,如果函數是遞歸定義的,簡單地封裝函數會導致重復計算,通常用打表的方法來解決。這是一種套路,需要熟練掌握。

CCF NOI,


參考鏈接:HDU2041 超級樓梯。

100分通過的C語言程序:

#include <stdio.h>typedef unsigned long long ULL;#define N 30ULL stairs[N+1];void setstairs(int n)
{ULL s1=1, s2=2, temp;stairs[0] = 0;stairs[1] = 1;stairs[2] = 2;for(int i=3; i<=n; i++) {temp = s1 + s2;s1 = s2;s2 = temp;stairs[i] = s2;}
}int main(void)
{int n;setstairs(N);while(scanf("%d", &n) != EOF)printf("%lld\n", stairs[n]);return 0;
}



ccf成績、轉載于:https://www.cnblogs.com/tigerisland/p/7563889.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/131387.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息