pascal爬楼梯(有坏台阶)问题
递推式:f[i]=f[i-1]+f[i-2]+f[i-3](i=3)
创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为宿城企业提供专业的成都网站建设、网站设计,宿城网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
基本情况:f[0]=1; f[1]=1; f[2]=2;
如果是坏台阶 清零
代码主程序
begin
readln(n,m);
for i:=1 to m do begin read(a[i]); s[a[i]]:=true; end; //s数组表示是否是坏台阶
f[0]:=1; if s[1]=false then f[1]:=1; if s[2]=false then f[2]:=2;
for i:=3 to n do
if s[i]=false then f[i]:=f[i-1]+f[i-2]+f[i-3];
writeln(f[n]);
end.
算法设计 爬楼梯类型,共n阶楼梯,一次最多爬m阶,用JAVA或者C或者C++
循环,,,,,好多循环,,,,哇,,,,实现了
#includestring.h
#includeiostream
#includestack
using namespace std;
int main()
{
int n = 0, m = 0, sum = 0, cnt = 0;
cout "输入阶梯数:" endl;
cin n;
cout "输入最多爬的阶梯数:" endl;
cin m;
if (n = 0)
{
cout "就一种,上去了!" endl;
}
if (m = 0)
{
cout "你想上是不可能的!" endl;
}
int i;
stackint sk;
do
{
if (sum = n)
{
++cnt;
while (sum = n)
{
sk.push(1);
++sum;
}
}
if (!sk.empty())
{
sum -= sk.top();
sk.pop();
}
else
{
cout cnt endl;
return 0;
}
HHH:
if (!sk.empty())
{
i = sk.top();
}
else
{
cout cnt endl;
return 0;
}
if (i m)
{
++i;
}
else
{
if (!sk.empty())
{
sum -= sk.top();
sk.pop();
goto HHH;
}
else
{
cout cnt endl;
return 0;
}
}
if (!sk.empty())
{
sum -= sk.top();
sk.pop();
}
else
{
cout cnt endl;
return 0;
}
sk.push(i);
sum += i;
} while (1);
return 0;
}
Java编程题:一个人上楼梯,他可以一步上1个台阶,2个台阶或3个台阶,共有n个台阶,输出所有他上台阶的方
一定要用递归的就这样写:
public class Test{
static final int s = 10; //自定义的台阶数
static int len = 0, sum = 0;
static int step[] = new int[s];
static void compute(final int stair) {
if(stair0) return;
if(stair==0) {
printSum();
sum++;
return;
}
for(int i = 1; i = 3; i++) {
step[len] = i;
len++;
compute(stair-i);
len--;
}
}
static void printSum() {
System.out.print("走法:");
for(int i = 0; i len; i++)
System.out.print(step[i]+ " ");
System.out.println();
}
public static void main(String args[]){
compute(s);
System.out.println("共有" + sum + "种走法");
}
}
请教两道JAVA编程题?
第一题:
public class no1
{
public static void main(String args[])
{
int i,j;
for(i=1;i=5;i++){
for(j=1;j=i;j++)
System.out.print("*");
System.out.println("");
}
}
}
编写一个Java应用程序,要求:我们日常生活中的爬楼梯,你可以一步走一层,也可以一步走两层,
public class TYes {
public static void main(String[] args) {
int n=10;
for(int x=0;xn;x++){
for(int y=0;yn;y++){
for(int z=0;zn;z++){
if(x+2*y+3*z == 10){
System.out.println("爬楼梯方法:"+"一步"+x+" 二步"+y+" 三步"+z);
}
}
}
}
}
}
n级阶梯,每次走一步或两步,问最多有多少种走法 用java程序
递归实现。。。
重要的是理解这个逻辑,
第n布,走一步,即n-1,再求n-1个阶梯的走法,
走两步,即n-2,再求n-2个阶梯的走法,
以此,n级阶梯的走法是n-1个阶梯的走法与n-2个阶梯的走法的和。
public int GetStepNum(int n)
{
if(n1) throw new Exception();
if(n==1) return 1;
if(n==2) return 2;
if(n2)
return GetStepNum(n-1)+GetStepNum(n-2);
}
标题名称:爬楼梯java代码 java走楼梯
本文路径:http://scgulin.cn/article/hjhhjd.html