C语言求助 在线等 这个程序怎么写啊

如题所述

第1个回答  2018-11-17
三个for循环直接暴力解决,这事最容易想的方法了。追问

还有排序啊

能发过来吗?救救孩子

追答#include<stdio.h>
int main()
{   
    int n,m;
    while(scanf("%d %d",&n,&m)!=EOF){
     int a[2000][4];
int t=1,sum=0;
        for(int i=0;i<=n;i++)
        {
         for(int j=0;j<=n;j++)
         {
         for(int k=0;k<=n;k++)
         {
         if(i*20+j*12+k*8==m&&i+j+k==n)
{
sum++;
                        a[t][1]=i;
                        a[t][2]=j;
                        a[t][3]=k;
                        t++;
                    }
}
}
}         
        if(sum==0) 
   printf("No Solution!\n");
else
{
for(int i=1;i<=t;i++)
{
for(int j=i+1;j<=t;j++)
{
if(a[i][1]<a[j][1])
{
int o,p,l;
o=a[j][1];p=a[j][2];l=a[j][3];
a[j][1]=a[i][1];a[j][2]=a[i][2];a[j][3]=a[i][3];
a[i][1]=o;a[i][2]=p;a[i][3]=l;
}
}
}
for(int i=1;i<=t;i++)
{
for(int j=i+1;j<=t;j++)
{
if(a[i][1]==a[j][1])
{
if(a[i][2]<a[j][2])
{
int o1,p1,l1;
    o1=a[j][1];p1=a[j][2];l1=a[j][3];
    a[j][1]=a[i][1];a[j][2]=a[i][2];a[j][3]=a[i][3];
    a[i][1]=o1;a[i][2]=p1;a[i][3]=l1;
}
}
}
}
for(int i=1;i<=sum;i++)
{
printf("%d %d %d\n",a[i][1],a[i][2],a[i][3]);
}
}
    } 
    return 0;
}

用数组存起来再进行排序

第2个回答  2018-11-17

#include<stdio.h>
main()
{   int i,j,k,n,m,l;
    while(1){
    scanf("%d%d",&n,&m);
    l=0;
        for(i=n;i>=0;i--)
            for(j=n;j>=0;j--)
                for(k=n;k>=0;k--)
                    if(i*20+j*12+k*8==m&&i+j+k==n){
                     printf("%d\t%d\t%d\n",i,j,k);
                     l=1;
}
        if(l==0) printf("No Solution!\n");
    } 
}

如图所示,望采纳。。。。。。

追问

我运行都是No solution

而且测试第一行要求输出的你也没写

本回答被网友采纳
相似回答