从(1-N)任选17个不重复的数字相加之和等于M(一定范围)的所有组合

SUNY58 2024-02-08 13:25:46

#include<stdio.h>
main()
{
FILE *fp ;
fp=fopen("D:/1.txt","w");

int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,s;
for(a=1;a<=2;a++)
{
for(b=2;b<=3;b++)
{
for(c=3;c<=4;c++)
{
for(d=4;d<=5;d++)
{
for(e=5;e<=6;e++)
{
for(f=6;f<=7;f++)
{
for(g=7;g<=8;g++)
{
for(h=8;h<=9;h++)
{
for(i=9;i<=10;i++)
{
for(j=10;j<=11;j++)
{
for(k=11;k<=12;k++)
{
for(l=12;l<=13;l++)
{
for(m=13;m<=14;m++)
{
for(n=14;n<=15;n++)
{
for(o=15;o<=16;o++)
{
for(p=16;p<=17;p++)
{
for(q=17;q<=18;q++)
{
if(a<b&&a<c&&a<d&&a<e&&a<f&&a<g&&a<h&&a<i&&a<j&&a<k&&a<l&&a<m&&a<n&&a<o&&a<p&&a<q)
if(b<c&&b<d&&b<e&&b<f&&b<g&&b<h&&b<i&&b<j&&b<k&&b<l&&b<m&&b<n&&b<o&&b<p&&b<q)
if(c<d&&c<e&&c<f&&c<g&&c<h&&c<i&&c<j&&c<k&&c<l&&c<m&&c<n&&c<o&&c<p&&c<q)
if(d<e&&d<f&&d<g&&d<h&&d<i&&d<j&&d<k&&d<l&&d<m&&d<n&&d<o&&d<p&&d<q)
if(e<f&&e<g&&e<h&&e<i&&e<j&&e<k&&e<l&&e<m&&e<n&&e<o&&e<p&&e<q)
if(f<g&&f<h&&f<i&&f<j&&f<k&&f<l&&f<m&&f<n&&f<o&&f<p&&f<q)
if(g<h&&g<i&&g<j&&g<k&&g<l&&g<m&&g<n&&g<o&&g<p&&g<q)
if(h<i&&h<j&&h<k&&h<l&&h<m&&h<n&&h<o&&h<p&&h<q)
if(i<j&&i<k&&i<l&&i<m&&i<n&&i<o&&i<p&&i<q)
if(j<k&&j<l&&j<m&&j<n&&j<o&&j<p&&j<q)
if(k<l&&k<m&&k<n&&k<o&&k<p&&k<q)
if(l<m&&l<n&&l<o&&l<p&&l<q)
if(m<n&&m<o&&m<p&&m<q)
if(n<o&&n<p&&n<q)
if(o<p&&o<q)
if(p<q)
if((a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q)>=153&&(a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q)<=154)
fprintf(fp,"%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d=%d\n",a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q);
}}}}}}}}}}}}}}}}}

fclose(fp);
}

运行结果有问题是:

1+2+3+4+5+6+7+8+9+10+11+13+14+15+16+17+153=36
1+2+3+4+5+6+7+8+9+10+11+13+14+15+16+18+154=36

请教各位老师 这是哪里出问题了?

 

 

 

...全文
209 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

这代码写的... 是AI从低能码狗那抄来的吧~~~

coarok 02-13
  • 打赏
  • 举报
回复

#include
#include

void findCombinations(int N, int M, std::vector& combination, int start) {
if (combination.size() == 17) {
int sum = 0;
for (int num : combination) {
sum += num;
}
if (sum == M) {
for (int num : combination) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return;
}

for (int i = start; i <= N; i++) {
    combination.push_back(i);
    findCombinations(N, M, combination, i + 1);
    combination.pop_back();
}

}

int main() {
int N, M;
std::cin >> N >> M;
std::vector combination;
findCombinations(N, M, combination, 1);
return 0;
}

在AI面前码狗啥都不是

  • 打赏
  • 举报
回复

#include <stdio.h>
void main()
{
    int N = 100;
    int M = 300;
    for (int i = 1; i <= N; i++)
    {
        for (int j = i + 1; j <= N; j++)
        {
            for (int k = j + 1; k <= N; k++)
            {
                for (int l = k + 1; l <= N; l++)
                {
                    for (int m = l + 1; m <= N; m++)
                    {
                        for (int n = m + 1; n <= N; n++)
                        {
                            for (int o = n + 1; o <= N; o++)
                            {
                                for (int p = o + 1; p <= N; p++)
                                {
                                    for (int q = p + 1; q <= N; q++)
                                    {
                                        for (int r = q + 1; r <= N; r++)
                                        {
                                            for (int s = r + 1; s <= N; s++)
                                            {
                                                for (int t = s + 1; t <= N; t++)
                                                {
                                                    for (int u = t + 1; u <= N; u++)
                                                    {
                                                        for (int v = u + 1; v <= N; v++)
                                                        {
                                                            for (int w = v + 1; w <= N; w++)
                                                            {
                                                                for (int x = w + 1; x <= N; x++)
                                                                {
                                                                    for (int y = x + 1; y <= N; y++)
                                                                    {
                                                                        if (i != j && j != k && k != l && l != m && m != n && n != o && p != q && q != r && r != s && s != t &&
                                                                            t != u && u != v && v != w && w != x && x != y )
                                                                        {
                                                                            if (i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y  == M)
                                                                            {
                                                                                printf("%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d+%d=%d\n", i, j, k, l, m, n,
                                                                                       o, p, q, r, s, t, u, v, w, x, y, M);
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

  • 打赏
  • 举报
回复

递归求解很简单~~~

64,311

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧