首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

C语言经典算法之穷举搜索法

C语言经典算法之穷举搜索法

#include <stdio.h>
#define SIDE_N 3
#define LENGTH 3
#define VARIABLES 6
/********定义全局变量*********/
int A,B,C,D,E,F;
int*pt[]={&A,&B,&C,&D,&E,&F};
int*side[SIDE_N][LENGTH]={&A,&B,&C,
                               &C,&D,&E,
                               &E,&F,&A};
int side_total[SIDE_N];
main()
{
         inti,j,t,equal;
         for(j=0;j<VARIABLES;j++)
                   *pt[j]=j+1;      /*初始化排列 1,2,3.....*/
         while(1)
         {
                   for(i=0;i<SIDE_N;i++)
                   {
                            for(t=j=0;j<LENGTH;j++)
                                     t+=*side[j];
                            side_total=t;
                   }
                   for(equal=1,i=0;equal&& i<SIDE_N-1;i++)
                            if(side_total!=side_total[i+1])      equal=0;
                   if(equal)
                   {
                            for(i=0;i<VARIABLES;i++)
                                     printf("%4d",*pt);
                            printf("\n");
                            scanf("%*c");
                   }
                   for(j=VARIABLES-1;j>0;j--)
                            if(*pt[j]>*pt[j-1])      break;
                   if(j==0)      break;
                   for(i=VARIABLES-1;i>=j;i--)
                            if(*pt>*pt[j-1])      break;
                   t=*pt[j-1];
                   *pt[j-1]=*pt;
                   *pt=t;
                   for(i=VARIABLES-1;i>j;i--,j++)
                   {
                            t=*pt[j];
                            *pt[j]=*pt;
                            *pt=t;
                   }
         }
}
返回列表