十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
public class TYes {
创新互联专注于企业成都全网营销、网站重做改版、双辽网站定制设计、自适应品牌网站建设、HTML5建站、商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为双辽等各大城市提供网站开发制作服务。
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);
}
}
}
}
}
}
循环,,,,,好多循环,,,,哇,,,,实现了
#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 + "种走法");
}
}
递归实现。。。
重要的是理解这个逻辑,
第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);
}