这种嵌套IF,能否用递归算法解决?

fangongdalu7148 2012-02-22 09:05:14
#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写成一个递归算法来解决问题?

...全文
133 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2012-02-23
  • 打赏
  • 举报
回复
如果你能找到其中的映射规律当然可以
  • 打赏
  • 举报
回复
http://www.cnblogs.com/zhangqqqf/archive/2008/09/12/1289730.html
zgsdzhaolanxiang1 2012-02-22
  • 打赏
  • 举报
回复
说错了,是嵌套 for循环
for(int a1=0;a1<12;a1++)
for(int a2=0;a2<12;a2++)
......
这些。。

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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