[转载]A、B、C、D、E、F、G、H、I、J 共10名学生有可能参加本次计算机竞
A、B、C、D、E、F、G、H、I、J
共10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束:
请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能情况。每种情况占一行。参赛同学按字母升序排列,用空格分隔。
比如:
C D G J
就是一种可能的情况。
package other;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.TreeSet;
import java.util.Vector;
public class arrays {
public static void main(String[] args) throws IOException
{
Vector<Character> vec=new
Vector<Character>();
vec.add('a');
vec.add('b');
vec.add('c');
vec.add('d');
vec.add('e');
vec.add('f');
vec.add('g');
vec.add('h');
vec.add('i');
vec.add('j');
//遍历所有vec的组合 并进行判断
Vector<Vector<Character>>
vec1=new
Vector<Vector<Character>>();
Vector<Character> v1=new
Vector<Character>();
Vector<Character> v2=new
Vector<Character>();
v2.add('a');
vec1.add(v1);
vec1.add(v2);
vec1=f(vec1,'b');
vec1=f(vec1,'c');
vec1=f(vec1,'d');
vec1=f(vec1,'e');
vec1=f(vec1,'f');
vec1=f(vec1,'g');
vec1=f(vec1,'h');
vec1=f(vec1,'i');
vec1=f(vec1,'j');
if(judgment(vec1.get(i))){
System.out.println(vec1.get(i));
}
}
}
public static
Vector<Vector<Character>>
f(Vector<Vector<Character>>
vec,char c){//一个字符一个字符的添加 先复制一遍已有的vec
然后每个vec后面添加一个c 加入到返回re中
Vector<Vector<Character>>
re=new
Vector<Vector<Character>>();
Vector<Character> temp;
for (int i = 0; i < vec.size(); i++) {
temp=new
Vector<Character>();
for (int j = 0; j < vec.get(i).size(); j++)
{
temp.add(vec.get(i).get(j));
}
re.add(temp);
}
for (int i = 0; i < vec.size(); i++) {
temp=new
Vector<Character>();
for (int j = 0; j < vec.get(i).size(); j++)
{
temp.add(vec.get(i).get(j));
}
temp.add(c);
re.add(temp);
}
return re;
}
}
嘻嘻 好有成就感哦 O(∩_∩)O~
但感觉方法是笨了一点