用6个自然数组成三角形,判断语句怎么写,请教
用1-6这6个自然数组成一个三角形,让这个三角形三条边的值之和相等,如图:三边的值之和都等于12,请输出所有的可能。
这题是不是需要用6个循环,而且值一个比一个小?
循环这样对不对?
int a,b,c,d,e,f;
for(a=1;a<=6;a++)
{
for(b=1;b<=5;b++)
{
for(c=1;c<=4;c++)
{
for(d=1;d<=3;d++)
{
for(e=1;e<=2;e++)
{
for(f=1;f<=1;f++)
{
这里的判断语句该怎么写?
}
}
}
}
}
}
// 0
// 1 2
// 3 4 5
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int i;
int main() {
vector<char> P(6);
vector<char>::iterator b,e;
b=P.begin();
e=P.end();
for (i=0;i<6;i++) P[i]=i+1;
i=0;
do {
if (P[0]+P[1]+P[3]==12
&& P[0]+P[2]+P[5]==12
&& P[3]+P[4]+P[5]==12) {
printf("%d:\n",++i);
printf(" %d\n" , P[0] );
printf(" %d %d\n" , P[1],P[2] );
printf("%d %d %d\n",P[3],P[4],P[5]);
}
} while (next_permutation(b,e));
printf("The total: %d",i);
return 0;
}
//1:
// 4
// 2 3
//6 1 5
//2:
// 4
// 3 2
//5 1 6
//3:
// 5
// 1 3
//6 2 4
//4:
// 5
// 3 1
//4 2 6
//5:
// 6
// 1 2
//5 3 4
//6:
// 6
// 2 1
//4 3 5
//The total: 6
#include <string>
#include <iostream>
using namespace std;
void PrintTri(int* arr,int total,int num,int sum1,int sum2,int sum3,string res)
{
int temp;char buffer[5];
if(total==0&&sum1==sum2&&sum2==sum3)
{
cout<<(res)<<endl;
}
for(int i=0;i<total;i++){
temp=arr[0];
arr[0]=arr[i];
arr[i]=temp;
int temparr[6];
for(int j=1;j<total;j++)
temparr[j-1]=arr[j];
int tempsum1=sum1;
int tempsum2=sum2;
int tempsum3=sum3;
if(num==0
[解决办法]
num==4
[解决办法]
num==5)
tempsum3+=arr[0];
if(num==0
[解决办法]
num==1
[解决办法]
num==2)
tempsum1+=arr[0];
if(num==2
[解决办法]
num==3
[解决办法]
num==4)
tempsum2+=arr[0];
sprintf_s(buffer,"%d ",arr[0]);
PrintTri(temparr,total-1,num+1,tempsum1,tempsum2,tempsum3,res+buffer);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[6]={1,2,3,4,5,6};
PrintTri(arr,6,0,0,0,0,"");
return 0;
}
#include <stdio.h>
void print(int a[],int b,int e)
{
if((b >= 0)&&(b <= e))
{
if(b == e)
{
if((a[0] + a[1] + a[3] == 12) && (a[0] + a[2] + a[5] == 12) && (a[3] + a[4] + a[5] == 12))
{
printf(" %d\n",a[0]);
printf(" %d %d\n",a[1],a[2]);
printf("%d %d %d\n",a[3],a[4],a[5]);
printf("\n");
}
}
else
{
int i = 0;
for(i = b;i <= e;i++)
{
int flag = a[b];
a[b] = a[i];
a[i] = flag;
print(a,b+1,e);
flag = a[b];
a[b] = a[i];
a[i] = flag;
}
}
}
}
int main()
{
int a[] = {1,2,3,4,5,6};
print(a,0,5);
return 0;
}