地理老师在黑板上画了一张世界地图,划分为五大洲,每个洲取个代号,五个学生来认 没人只答对一半。
甲:3号是欧洲,2号是美洲
乙:4号是亚洲,2号是大洋洲
丙:1号是亚洲,5号是非洲
丁:4号是非洲,3号是大洋洲
卯:2号是欧洲,5号是美洲
请问用程序怎么写出来,(最好甲乙丙丁卯当成条件去验证)
甲:3号是欧洲,2号是美洲
乙:4号是亚洲,2号是大洋洲
丙:1号是亚洲,5号是非洲
丁:4号是非洲,3号是大洋洲
卯:2号是欧洲,5号是美洲
请问用程序怎么写出来,(最好甲乙丙丁卯当成条件去验证)
public class Test {
public static String test(String[][] condition, String[] place, String[] rst) {
String[] tmp = new String[rst.length];
int[] = new int[6];
int[] cnt = new int[5];
int i;
String str = null;
for (i = 0; i < 6; ++i) {
[i] = 0;
}
while ([5] == 0) {
++[0];
for (i = 0; i < 5; ++i) {
cnt[i] = 0;
if ([i] >= 5) {
[i] -= 5;
++[i + 1];
} }
for (i = 0; i < 5; ++i) {
++cnt[[i]];
if (cnt[[i]] > 1) {
break;
}
}
if(cnt[[i]] > 1){
continue;
}
str = "";
for(i = 0; i < 5; ++i){
tmp[i] = rst[i];
tmp[i] += place[[i]];
str += tmp[i];
}
for(i = 0; i < 5; ++i){
int index1 = str.indexOf(condition[i][0]);
int index2 = str.indexOf(condition[i][1]);
if((index1 != -1 && index2 != -1) || (index1 == -1 && index2 == -1)){
break;
}
}
if(i == 5){
//System.out.println(str);
return str;
}
}
return null;
} public static void main(String arsg[]) {
String[][] condition = { { "3号是欧洲", "2号是美洲" }, { "4号是亚洲", "2号是大洋洲" },
{ "1号是亚洲", "5号是非洲" }, { "4号是非洲", "3号是大洋洲" },
{ "2号是欧洲", "5号是美洲" } };
String[] place = { "欧洲", "美洲", "亚洲", "大洋洲", "非洲" };
String[] rst = { "1号是", "2号是", "3号是", "4号是", "5号是" };
System.out.println(test(condition, place, rst));
}
}
输出结果
1号是亚洲2号是大洋洲3号是欧洲4号是非洲5号是美洲
private static int id[] = {1,2,3,4,5};
private static String continents[] = {"亚洲","欧洲","非洲","美洲","大洋洲"}; public static void main(String[] args) {
// TODO 自动生成方法存根
perm(continents,0,4);
} private static void perm(String continents[],int i,int n) { //此算法本质是递归求字符串的全排列问题
int j;
String temp;
if(i==n){
if((getResult(continents,3,"欧洲",2,"美洲")== 0)
&&(getResult(continents,4,"亚洲",2,"大洋洲") ==0)
&&(getResult(continents,1,"亚洲",5,"非洲")==0)
&&(getResult(continents,4,"非洲",3,"大洋洲")==0)
&&(getResult(continents,2,"欧洲",5,"美洲")==0)){
for(int k = 0; k < id.length; k++){
System.out.println(k+1+"号是: "+continents[k]);
}
}
}
else{
for(j=i;j<=n;j++){
temp = continents[i];
continents[i] = continents[j];
continents[j] = temp;
perm(continents,i+1,n);
temp = continents[i];
continents[i] = continents[j];
continents[j] = temp;
}
}
}
private static int getResult(String continents[],int index1, String str1, int index2, String str2){
int result = 0;
index1--;
index2--;
if(continents[index1].equals(str1))
result++;
else
result--;
if(continents[index2].equals(str2))
result++;
else
result--;
return result;
}
}结果:
1号是: 亚洲
2号是: 大洋洲
3号是: 欧洲
4号是: 非洲
5号是: 美洲