c語言爬樓梯
⑴ c語言 設計 爬樓梯的方法
我是學pascal的~只說得上來演算法。
你說的
爬樓梯
是指有n階樓梯,每次可以上1,2……,p階(1<=p<=n),問走到最上面有多少種不同的走法吧?
這個就是
遞推
啊~
設上i級台階共有f(i)種不同的方法,很簡單就可以知道f(1)=1,f(2)=2……
當i大於2時,分n種情況討論:第一步上了1級台階,第一步上了2級台階,……第一步上了n級台階。
如果第一步上了1級樓梯,那麼還剩下i-1級樓梯,要走完這i-1級樓梯,一共有f(i-1)種方法。
如果第一步上了2級樓梯,那麼還剩下i-2級樓梯,要走完這i-2級樓梯,一共有f(i-2)種方法。
……
如果第一步上了n級樓梯,那麼還剩下i-n級樓梯,要走完這i-2級樓梯,一共有f(i-n)種方法。
所以,在第一種情況下有f(i-1)種不同走法,第二種情況有f(i-2)種不同走法……這n種情況既沒有重復方案,也沒有遺漏,因此得出f(i)=f(i-1)+f(i-2)+……+f(i-n)
接著就行了,200階樓梯都不成問題。
⑵ c語言走樓梯
遞歸:
上n級樓梯必須先上n-1級樓梯,再step=2
如果step=1,就相當於先上n-1級樓梯了
或者先上n-2級樓梯,再step=1
//f(n)=f(n-1)+f(n-2)
//f(1)=1
f(2)=2
#include
"stdafx.h"
#include
<stdio.h>
int
f(int
n)
{
if(n==1)
return
1;
else
if(n==2)
return
2;
else
if(n<3)
return
0;
else
{
return
f(n-1)+f(n-2);
}
}
void
main()
{
int
n;
scanf("%d",&n);
printf("%d\n",f(n));
}
⑶ 用C語言編程,有20級台階的樓梯,一次可以邁一級或者倆級台階,那麼要爬完此台階有幾種方法(需要用
//兵無常勢,水無常形,情景模擬,遞歸實現
#include<stdio.h>
intcount=0;
voidstep(ints,intt)
{
if(s<t)
{
step(s+1,t);
step(s+2,t);
}
elseif(s==t)
{
count++;
}
}
voidmain()
{
intn;
printf("Inputn:");
scanf_s("%d",&n);
step(0,n);
printf("Thetotalpathis%d ",count);
scanf_s("%c",&n);
getchar();
}
//用step函數表示爬樓梯的動作,step(爬)(所到層,總層)
//爬到了嗎?沒有,再爬一層或兩層,
//爬到了嗎?是的,方法加一。明白嗎?歡迎提問
⑷ c語言求助:爬樓梯,可以一次一步,也可以一次兩步,走n級樓梯共有多少種方法下面的程序說明地方錯了
#include <stdio.h>
int count(int n)
{
int i,j,sum=0,a,c1,c2,d1,d2;
if(n>0)
for(i=0;i<=n;i++)
for(j=0;j<=n/2;j++)
if(n==i+2*j)
{
c1=i+j;
d1=1;
c2=1;
d2=1;
for(a=0;a<i;a++)
{
c2*=c1--;
d2*=d1++;
}
sum+=c2/d2;
}
return sum;
}
void main()
{
int m,n;
printf("請輸入樓梯階數:");
scanf("%d",&n);
m=count(n);
printf("總共有%d種走法\n",m);
}
⑸ C語言爬樓梯
#include<stdio.h>
intmain()
{inti,n,T,a[31]={1,1,2};
scanf("%d",&T);
for(i=3;i<31;i++)
a[i]=a[i-1]+a[i-2]+a[i-3];
for(i=0;i<T;i++)
{scanf("%d",&n);
printf("%d ",a[n]);
}
return0;
}
⑹ 爬樓梯c語言問題,一次只能走一步或兩步或三步
#includeint main(){int i,n,T,a[31]={1,1,2}; scanf("%d",&T); for(i=3;i<31;i++) a[i]=a[i-1]+a[i-2]+a[i-3]; for(i=0;i
#include <stdio.h>
int count(int n)
{
int i,j,sum=0,a,c1,c2,d1,d2;
if(n>0)
for(i=0;i<=n;i++)
for(j=0;j<=n/2;j++)
if(n==i+2*j)
{
c1=i+j;
d1=1;
c2=1;
d2=1;
for(a=0;a<i;a++)
c2*=c1--;
d2*=d1++;
printf("請輸入樓梯階數:");
scanf("%d",&n);
m=count(n);
printf("總共有%d種走法 ",m);
}
(6)c語言爬樓梯擴展閱讀:
C語言包含的各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且以小寫字母為主,對許多不必要的部分進行了精簡。實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能,如需此類功能,需要通過配合編譯系統所支持的各類庫進行編程,故c語言擁有非常簡潔的編譯系統。
⑺ C語言 爬樓梯的問題
用遞歸解決比較方便:
#include<stdio.h>
int fibonacci (int n)
{
if (n > 2)
return fibonacci(n - 1) + fibonacci(n - 2);
else
return 1;
}
int main()
{
int data[20];
int t;
int i;
printf ("Please input T and the nums: \n");
scanf ("%d", &t);
for (i=0; i<t; i++)
{
scanf("%d", &data[i]);
}
printf("The output: \n");
for (i=0; i<t; i++)
{
printf("%d\n", fibonacci (data[i]+1));
}
return 0;
}
/* 這是斐波那契演算法的一個應用,你可以搜索一下 */