禁忌搜索算法 C/C++ 源代码
#define N 100
void yuesefu1(int data[],int result[],int sum,int k)
{
int i=0,j=0,count=0;
int n;
while(count
{
for(n=0;n
if(result[n]==data[i])
break;
if(n>=count)/* 若此人还在圈内 */
j++;
if(j==k)
{
result[count++]=data[i];/* 把出圈的人的编号存入禁忌表 */
j=0;
}
i++;
if(i==sum)
i=0;
}
}
void main()
{
int data[N];
int result[N]={0};
int i,j,total,k;
printf("\nPlease input the number of every people.\n");
for(i=0;i
{
int input;
scanf("%d",&input);
if(input==0)
break;
for(j=0;j
if(data[j]==input)
break;
if(j>=i&&input>0)
{
data[i]=input;
i++;
}
else
printf("\nData error.Re-input:");
}
total=i;
printf("\nY ou have input:\n");
for(i=0;i
{
if(i%10==0)
printf("\n");
printf("%4d",data[i]);
}
printf("\nPlease input a number to count:");
scanf("%d",&k);
yuesefu1(data,result,total,k);
printf("\nThe sequence is:\n");
for(i=0;i
printf("%d ",result[i]);