#include<iostream>
using namespace std;
int main()
{
int wm[12]={98,53,57,64,50,82,18,34,69,56,16,61};
int d1=0,d2=0;
int m=1;
int find[100]={0};
int pFind=0;
for(int a1=0;a1<12;a1++)
{
for(int a2=0;a2<12;a2++)
{
if(a2==a1)
continue;
for(int a3=0;a3<12;a3++) 
{
if(a3==a2 || a3==a1)
continue;
for(int a4=0;a4<12;a4++) 
{
if(a4==a3 || a4==a2 || a4==a1)
continue;
for(int a5=0;a5<12;a5++) 
{
if(a5==a4 || a5==a3 || a5==a2 || a5==a1)
continue;
for(int a6=0;a6<12;a6++) 
{
if(a6==a5 || a6==a4 || a6==a3 || a6==a2 || a6==a1)
continue;
d1=wm[a1]+wm[a2]+wm[a3]+wm[a4]+wm[a5]+wm[a6];
for(int i=0;i<12;i++)
{
if(i!=a6 && i!=a5 && i!=a4 && i!=a3 && i!=a2 && i!=a1)
{
d2+=wm[i];
}
}
if(d1==d2)
{
bool bFind=false;
for(int i=0;i<=pFind;i++)
{
if(find[i]==d1)
{
bFind=true;
break;
}
}
if(bFind)
break;
cout<<"No"<<m<<":"<<wm[a1]<<" "<<wm[a2]<<" "<<wm[a3]<<" "<<wm[a4]<<" "<<wm[a5]<<" "<<wm[a6]<<",";
for(int i=0;i<12;i++)
{
if(i!=a6 && i!=a5 && i!=a4 && i!=a3 && i!=a2 && i!=a1)
{
cout<<wm[i]<<" ";
}
}
cout<<endl;
m++;
find[pFind]=d1;
pFind++;
}
d1=0,d2=0;
}
}
}
}
}
}
return 0;
}
这道题我直接用了一大堆IF解决的,但是这些IF 很有规律,很像递归,所以我想求解,如何把这些IF写成一个递归算法来解决问题?