题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。
a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
用循环能否做出?
求高手指教

解决方案 »

  1.   

    用循环当然能做
    不过数据量大的时候就比较慢
    本题中只有 3人,可以循环去解
    不用循环可以这样:
    a{y,z}
    b{x,y,z}
    c{y}
    其实可以转换为全覆盖问题
      

  2.   

    见代码:class jiadui {
    protected String name;
    jiadui(String name){
    this.name = name;

    }}
    class yidui{
    protected String name;
    yidui(String name){
    this.name = name;
    }
    }public class bisai { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    jiadui[] N = new jiadui[3];
    N[0] = new jiadui("a");
    N[1] = new jiadui("b");
    N[2] = new jiadui("c");
    yidui[] M = new yidui[3];
    M[0] = new yidui("x");
    M[1] = new yidui("y");
    M[2] = new yidui("z");
    String temp = "";
    String[] mingdan = new String[3];
    for(int i=0;i<3;i++){
    if(N[i].name=="a"&&M[i].name=="x"){
    temp = N[i].name;
    N[i].name = N[i+1].name;
    N[i+1].name = temp;
    mingdan[i] =N[i].name+"-"+M[i].name;//mingdan[0]=b-x

    }

    if(i==1){
     if(N[i].name=="a"){
    temp = N[i].name;
    N[i].name = N[i+1].name;
    N[i+1].name = temp;
    mingdan[i] =N[i].name+"-"+M[i].name;//mingdan[1]=c-y
    }
    }
    mingdan[i] =N[i].name+"-"+M[i].name;//mingdan[2]=a-z
    }
    for(int i=0;i<3;i++){
    System.out.println(mingdan[i]);
    }
    //a-z,b-x,c-y //a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
    }}
    这是輸出:
    b-x
    c-y
    a-z
      

  3.   

      public class AllSort {
    private static char[] chs1 = { 'x', 'y', 'z' };
    private static char[] chs2 = { 'a', 'b', 'c' };
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    sort(chs2, 0, chs2.length - 1);
    }
    public static void sort(char[] chs, int start, int end) {
    if (start == end) {
    outPutChars(chs);
    return;
    } else
    ;
    for (int i = start; i <= end; i++) {
    exchange(chs, i, start);
    sort(chs, start + 1, end);
    exchange(chs, i, start);
    }
    }
    private static void exchange(char[] chs, int pos0, int pos1) {
    char c = chs[pos0];
    chs[pos0] = chs[pos1];
    chs[pos1] = c;
    }
    private static void outPutChars(char[] chs) {
    for (int i = 0; i < chs.length; i++) {
       if ((chs[i] == 'a' && chs1[i] == 'x')
    || (chs[i] == 'c' && (chs1[i] == 'x' || chs1[i] == 'z'))) {
    return;
       }
    ;
    }// end for
    for (int i = 0; i < chs.length; i++) {
    System.out.print(chs1[i] + " VS " + chs[i] + "  ");
    }// end for
    System.out.println();
    }
    }
      

  4.   

    public void tennis(){
    //char arr[] = {'a','b','c'};
    char i,j,k;//i是a的对手,j是b的对手,k是c的对手
    for ( i = 'x'; i <= 'z'; i++) {
    for ( j = 'x'; j <= 'z'; j++) {
    for( k = 'x'; k <= 'z'; k++){
    if((i != j && i != k && j != k)&& i != 'x' && k != 'x' && k != 'z'){
    System.out.println(i +"====" + j + "====" + k);
    }
    }
    }
    }   
    }
      

  5.   


    public void tennis(){
    //char arr[] = {'a','b','c'};
    char i,j,k;//i是a的对手,j是b的对手,k是c的对手
    for ( i = 'x'; i <= 'z'; i++) {
    for ( j = 'x'; j <= 'z'; j++) {
    for( k = 'x'; k <= 'z'; k++){
    if((i != j && i != k && j != k)&& i != 'x' && k != 'x' && k != 'z'){
    System.out.println(i +"====" + j + "====" + k);
    }
    }
    }
    }   
    }