- 注册时间
- 2007-12-27
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 2608
- 在线时间
- 小时
|
发表于 2008-8-15 10:36:52
|
显示全部楼层
程序比较土呀。
是在vc2005下,压缩包为工程目录中所有的文件,其中源码如下:- // 20tree-2.cpp : Defines the entry point for the console application.
- //
-
- #include "stdafx.h"
- #include <conio.h>
- #include <stdlib.h>
- #include <time.h>
- #define M 4845
- #define K 6
- int show(int sk[],int skn)
- {
- int i,k,n;
- for(i=0;i<skn;i++)
- {
- n=sk[i];
- for(k=0;k<20;k++)
- {
- if(n%2==1)printf("%2d,",k+1);
- n/=2;
- }
- printf("\n");
- }
- for(k=0;k<20;k++)
- {
- for(i=0;i<skn;i++)
- {
- if(sk[i]%2==1)printf(" *");else printf(" .");
- sk[i]/=2;
- }
- printf("\n");
- }
- return 0;
- }
- int zzch(int z[],int zn,int sk,int zz[])
- {
- int i,j,s,kk,k,r;
- r=0;
- kk=z[sk];
- for(i=0;i<zn;i++)
- {
- k=z[i]&kk;
- s=0;
- for(j=0;j<20;j++){s+=k%2;k/=2;}
- if(s<=1)
- {
- zz[r]=z[i];r++;
- }
- }
- return r;
- }
- int formatzz(int z[])
- {
- int i,j,k,s,ss;
- ss=0;
- for(i=0;i<1048576l;i++)
- {
- k=i;s=0;
- for(j=0;j<20;j++){s+=k%2;k/=2;}
- if(s==4){z[ss]=i;ss++;}
- }
- return 0;
- }
- int cztoz(int z[],int zz[],int n)
- {
- int i;
- for(i=0;i<n;i++)zz[i]=z[i];
- return 0;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- int i,j,k,kt,n,nt,skn,zn,m,skm;
- int z[M],zz[M],zzz[M];
- int sk[50];
- formatzz(zzz);
- srand((unsigned)time(NULL));
- skm=0;
- for(m=0;m<100000;m++)
- {
- cztoz(zzz,z,M);
- skn=0;
- zn=M;
- for(j=0;zn!=0&&j<50;j++)
- {
- n=-1;
- for(i=0;i<K;i++)
- {
- kt=rand()%zn;
- nt=zzch(z,zn,kt,zz);
- if(nt>n){n=nt;k=kt;}
- }
- zzch(z,zn,k,zz);
- sk[skn]=z[k];skn++;
- zn=n;cztoz(zz,z,zn);
- // printf("k=%d,n=%d.\n",k,n);
- }
- if(skn>skm)
- {
- show(sk,skn);
- printf("skn(m=%d)=%d.\n",m,skn);
- skm=skn;
- }
- }
- printf("End\n");
- _getch();
- return 0;
- }
复制代码 |
|