错时三刻 2023-03-09 00:41 采纳率: 70%
浏览 44
已结题

飞行棋例举所有走法c语言

初学者,碰到个棘手的问题不会做,请教一下怎么例举所有可能结果


#include<stdio.h>
main()
{
    int x,num=0;
    scanf("%d",&x);
    for(int i=4;i>=0;i--)
    {
        for(int j=5;j>=0;j--)
        {
            for(int k=6;k>=0;k--)
            {
                for(int l=8;l>=0;l--)
                {
                    for(int m=11;m>=0;m--)
                    {
                        for(int n=22;n>=0;n--)
                        {
                            if(i*6+j*5+k*4+l*3+m*2+n==x)
                            {
                            printf("%d %d %d %d %d %d\n",i,j,k,l,m,n);
                            num++;
                            }
                        }
                    }
                }
            }
        }
    }
    
    printf("%d\n",num);
} 

img

  • 写回答

3条回答 默认 最新

  • ksgpjhqf 2023-03-09 12:57
    关注

    只计算走法个数,不需要列举所有走法,也可以不用递归:

    #include<stdio.h>
    int main(){
        int num[22]={1,1,1,1,1,1},i,j;
        for(i=0;i<22;i++){
            for(j=i-6<0?0:i-6;j<i;j++){
                num[i]+=num[j];
            }
        }
        int n;
        while(scanf("%d",&n),n!=0){
            printf("%d\n",num[n-1]);
        }
        return 0;
    } 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 已采纳回答 3月9日
  • 修改了问题 3月9日
  • 创建了问题 3月9日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?