标题:求助!JAVA转换C++
只看楼主
ashencs
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-26
 问题点数:0 回复次数:4 
求助!JAVA转换C++


import java.util.ArrayList;
import java.util.List;

/**
* 排列
*/
public class Floor {
/**
* 对字符串数组进行全排列
*
* @param args 字符串数组
* @return 所有排列情况的字符串数组列表
*/
public List<String[]> doPermutation(String[] args) {
//保存结果的列表
List<String[]> rl = new ArrayList<String[]>();
//添加初始数组
rl.add(args);
//外层遍历
for (int i = 0; i < args.length; i++) {
List<String[]> l = new ArrayList<String[]>();
//内层遍历
for (int j = 0; j < i; j++) {
//换位后的数组列表的所有元素追加到此列表的尾部。
l.addAll(convertArray(rl, i, j));
}
rl.addAll(l);
}
return rl;
}

/**
* 把列表中所有数组中b位置的字符串换到a位置
*
* @param l 列表
* @param a 位置
* @param b 位置
* @return 换位后的数组列表
*/
public List<String[]> convertArray(List<String[]> l, int a, int b) {
//保存结果的列表
List<String[]> rl = new ArrayList<String[]>();
//遍历列表
for (int i = 0; i < l.size(); i++) {
//克隆列表中的数组
String[] ss = (String[])l.get(i).clone();
//数组换位
String s = ss[a];
ss[a] = ss[b];
ss[b] = s;
//保存换位后的数组
rl.add(ss);
}
return rl;
}

/**
* 得到某个人所在楼层.
*
* @param floor 楼层列表
* @param name
* @return 楼层
*/
public int getIndexOfName(String[] floor, String name) {
int f = 0;
for (int i = 0; i < floor.length; i++) {
if (floor[i].equals(name)) {
f = i + 1;
}
}
return f;
}

public void calculateAndPrint(List<String[]> list, String[] names) {
for (int i = 0; i < list.size(); i++) {
String[] res = list.get(i);
//得到各人的楼层
int a = this.getIndexOfName(res, names[0]);
int b = this.getIndexOfName(res, names[1]);
int c = this.getIndexOfName(res, names[2]);
int d = this.getIndexOfName(res, names[3]);
int e = this.getIndexOfName(res, names[4]);
//其中A不住1楼,B不住5楼
if (a != 1 && b != 5) {
//C和D住上下楼(可以C比D住的高,也可以D比C住的高),
if ((c - d) == 1 || (c - d) == -1) {
//E比C住的高
if (e > c) {
this.print(res);
}
}
}
}
}

/**
* 打印数组
*
* @param bb
*/
public void print(String[] bb) {
//遍历数组元素
for (int k = 0; k < bb.length; k++) {
//打印数组元素
System.out.print(bb[k]);
}
//换行
System.out.print("\n");
}


public static void main(String[] args) {
Floor floor = new Floor();
String[] names = {"A", "B", "C", "D", "E"};
List<String[]> list = floor.doPermutation(names);
floor.calculateAndPrint(list, names);
}

}

希望有人能帮帮我,谢谢拉!

搜索更多相关主题的帖子: JAVA args util java 
2007-06-30 17:30
神vLinux飘飘x
Rank: 2
等 级:新手上路
威 望:3
帖 子:436
专家分:0
注 册:2007-1-4
得分:0 
你想做什么阿
2007-06-30 17:32
ashencs
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-26
得分:0 

把这个转化为C++表达

2007-06-30 17:56
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
得分:0 
有点头疼 呵呵 什么都得改写  

fighting!from now on!
2007-07-01 10:28
ashencs
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-26
得分:0 
c++和JAVA好像差的很多呀
2007-07-01 18:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-151644-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.355064 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved