题目:
任一给4个正整数,求出它的所有加和的总数。并按相应的格式打印出来
如:1,2,3,4
共有加和数10种。
结果打印如下:
和为1有1种
1=1;
和为2有1种
2=2;
...
和为6有2种
6=1+2+3;
6=2+4;
...
和为10有1种
10=1+2+3+4;
下面提供的算法只是将四个整数的所有加和列出来,而没有进行格式的输出:
#include <iostream>
#include <windows.h>
#include <string.h>
using namespace std;
int c[19];
void sum1(int* a,int size)
{
int now = 0;
for(int i =1;i<=size;i++)
{
for(int j = 0;j<size;j++)
{
bool b = false;
switch(i)
{
case 1:cout<<a[j]<<endl;c[now++]=a[j];break;
case 2:
for(int k =j ;k<size;k++)
{
cout<<a[j]+a[k]<<"="<<a[j]<<"+"<<a[k]<<endl;
c[now++] = a[j]+a[k];
}
break;
case 3:
for(int m =j+1 ;m<size;m++)
for(int n =m+1;n<size;n++)
{
cout<<a[j]+a[m]+a[n]<<"="<<a[j]<<"+"<<a[m]<<"+"<<a[n]<<endl;
c[now++]=a[j]+a[m]+a[n];
}
break;
case 4:
cout<<a[0]+a[1]+a[2]+a[3]<<"="<<a[j]<<"+"<<a[j+1]<<"+"<<a[j+2]<<"+"<<a[j+3]<<endl;
c[now++]=a[0]+a[1]+a[2]+a[3];
b=true;
break;
}
if(b==true)
{
break;
}
}
}
}
int main()
{
int a[] ={4,2,3,1};
sum1(a,4);
cout<<"-----------------------------"<<endl;
for(int i = 0;i<19;i++)
cout<<c[i]<<endl;
return 0;
}