递推式: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.
循环,,,,,好多循环,,,,哇,,,,实现了
#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;
}
一定要用递归的就这样写:
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 + "种走法");
}
}
第一题:
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("");
}
}
}
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布,走一步,即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);
}
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款