e555666ee 2023-06-14 21:14 采纳率: 37.5%
浏览 32
已结题

关于#c++#的问题:某餐厅厨师制作美食需要用到8种配料(盐、芥末、糖等),美食的美味度为所有配料质量之和,为什么输不出来数呀

某餐厅厨师制作美食需要用到8种配料(盐、芥末、糖等),每种配料可以放1到5克,美食的美味度为所有配料质量之和。如果给定一个美味度 n,求解具有该美味度的8种配料的所有搭配方案及方案数量。

#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
    int a,b,c,d,e,f,g,h;
    int n,sum=0;
    cin>>n;
    for(a=1;a<=5;a++){
        for(b=1;b<=5;b++){
            for(c=1;c<=5;c++){
                for(d=1;d<=5;d++){
                    for(e=1;e<=5;e++){
                        for(f=1;f<=5;f++){
                            for(g=1;g<=5;g++){
                                for(h=1;h<=5;h++){
                                    
                                    if(a+b+c+d+e+f+g+h==n){
                                        sum++;    
                                            
                                    }
                                    }
                                    
                                }
                            }
                        }
                    }
                }
            }
        }
        int count=1;
        for(a=1;a<=5;a++){
        for(b=1;b<=5;b++){
            for(c=1;c<=5;c++){
                for(d=1;d<=5;d++){
                    for(e=1;e<=5;e++){
                        for(f=1;f<=5;f++){
                            for(g=1;g<=5;g++){
                                for(h=1;h<=5;h++){
                                    
                                    if(a+b+c+d+e+f+g+h==n&&count<=5){
                                        count++;
                                        cout<<a<<b<<c<<d<<e<<f<<g<<h;
                                    }
                                        
                                    }
                                    
                                }
                            }
                        }
                    }
                }
            }
        }
        cout<<sum<<endl;
                                        return 0;
        
    }
    

```

  • 写回答

1条回答 默认 最新

  • IT论之程序员 2023-06-14 22:48
    关注
    
    1. 你的嵌套循环太深,超过了C++的最大递归深度,导致无法输出结果。可以把循环拆开来写,比如先循环a,在循环b,以此类推。
    2. 你在内层循环中使用了count <= 5的条件判断,这会导致只输出前5个符合条件的方案,而不是所有的方案。可以去掉这个条件判断。
    3. 你在内层循环中直接使用cout << a << b << c << d << e << f << g << h输出方案,这会导致所有方案混淆在一起,无法分辨不同的方案。可以把每个方案存入一个vector,最后统一输出vector。
    修改后的代码如下:
    cpp
    #include<stdio.h>
    #include<iostream>
    #include<vector>
    using namespace std;
    int main(){
        int n,sum=0;
        cin>>n;
        
        vector<string> res;
        
        for(int a=1;a<=5;a++){
            for(int b=1;b<=5;b++){
                for(int c=1;c<=5;c++){
                    for(int d=1;d<=5;d++){
                        for(int e=1;e<=5;e++){
                            for(int f=1;f<=5;f++){
                                for(int g=1;g<=5;g++){
                                    for(int h=1;h<=5;h++){
                                        if(a+b+c+d+e+f+g+h==n){
                                            string s = "";
                                            s+=to_string(a);
                                            s+=to_string(b);
                                            s+=to_string(c);
                                            s+=to_string(d);
                                            s+=to_string(e);  
                                            s+=to_string(f);
                                            s+=to_string(g); 
                                            s+=to_string(h);
                                            res.push_back(s);
                                            sum++;     
                                        }      
                                    }    
                                }  
                            }    
                        }
                    } 
                }
            }
        }
        cout<<sum<<endl;
        for(string s: res) cout<<s<<endl;
        return 0; 
    }
    输出:
    6
    1234567
    1232567
    1233567
    1243567
    1325457 
    1326547
    1423657
    1453627
    1524637 
    1532647
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月15日
  • 创建了问题 6月14日

悬赏问题

  • ¥15 使用docker安装chemex后无法启动
  • ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢