A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 史卜坤 中级黑马   /  2012-6-27 20:21  /  1121 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看了下全排列,然后看到了个题目。用计算机算一下一个简单幻方的小问题,就是一个四边形,四条边共有8个方块,往里面填入1到8,不许重复,并且任意一条边的和相加等于15。编完后用了好长时间改错,终于完成。得意一把。
public class Nine {
void range(int[] a,int i){
if(i==a.length){
  if(a[0]+a[1]+a[2]==15&&a[2]+a[3]+a[4]==15&&a[4]+a[5]+a[6]==15&&a[6]+a[7]+a[0]==15)
   System.out.println(a[0]+" "+a[1]+" "+a[2]+"\n"+a[7]+"   "+a[3]+"\n"+a[6]+" "+a[5]+" "+a[4]+"\n");
  return;
}
for(int j=i;j<a.length;j++){
  swap(a,i,j);
  range(a,i+1);
  swap(a,i,j);
}
}
void swap(int[] a,int i,int j){
int t=a[j];
a[j]=a;
a=t;
}
public static void main(String[] args) {
int[] a={1,2,3,4,5,6,7,8};
Nine nine=new Nine();
nine.range(a,0);
}
}

评分

参与人数 1黑马币 +20 收起 理由
黄奕豪 + 20 赞一个!

查看全部评分

1 个回复

倒序浏览
void swap(int[] a,int i,int j){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马