组合数学实验.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
组合数学实验.doc

组合数学实验 实验一 Cayley树的生成 源代码: import java.io.BufferedWriter; import java.io.FileWriter; import java.util.Scanner; public class Cayley { int n; long count; int a[][]; int b[][]; int s[][]; long func(int n1,int n2){ //求n1的n2次方 long m=1; while(n2=1){ m *=n1; n2--; } return m; } Cayley(int n0){ this.n=n0; this.count =this.func(n,n-2); s=new int[(int)count+1][n-1];//首先生成的 n-2 个元素的序列 a=new int[(int)count+1][n]; b=new int[(int)count+1][n]; int i,j; for(j=1;j=count;j++)//生成序列算法 { if((j%n)==0) s[j][1]=n; else s[j][1]=j%n; }//第1位 int f; //每一位取值1到7 long msize;//5^x int size; for(i=2;i=n-2;i++) { f=1; size=0; msize=this.func(n,i-1); for(j=1;j=count;j++) { if(size==msize) { if(f==n) { f=0; } f++; size=0; } s[j][i]=f; size++; }//for }//while//生成count个序列 ///////////////////////下面由s[i][j]生成 n-1对序列,每对序列由n-1条边表示,存于a[][],b[][]中 int a1[]=new int [n+1]; int b1[]=new int [n-1]; for(i=1;i=(int)count;i++) for(j=1;j=n-2;j++) b[i][j]=s[i][j]; for(i=1;i=(int)count;i++){ //每一个 int k; int k1; for(k=1;k=n-2;k++){ b1[k]=b[i][k]; }//得到本个的b1[] 1 for(int l=1;l=n;l++){ a1[l]=l;//得到本个的a1[] 2 } for(j=1;j=n-2;j++){ //每一个都要做这么多次计算 //每次 for(k=1;k=n-2;k++){ if(b1[k]!=0) { k1=b1[k]; a1[k1]=0; } }// 3 int min=n; int minCount=0; for(int p=1;p=n;p++){ if(a1[p]!=0 a1[p]min) { min=a1[p]; minCount=p; } }// 4 a[i][j]=min; a1[minCount]=0;// 5 int k2; k2=b1[j]; a1[k2]=k2; b1[j]=0;// 6 }//每一个都要做这么多次计算 end int q; for(q=1;q=n;q++){ if(a1[q]!=0){ a[i][n-1]=a1[q]; a1[q]=0; break; } } int

文档评论(0)

dreamzhangning + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档