黑马程序员技术交流社区
标题:
一道基础编程题。
[打印本页]
作者:
kakasa
时间:
2014-10-12 21:19
标题:
一道基础编程题。
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向
队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
从题目条件可以知道,赛程表应该是:
a-z
b-x
c-y
怎么用代码实现输出赛程表?
作者:
李天富
时间:
2014-10-12 23:55
import java.util.*;
class RaceCard
{
public static void main(String[] args)
{
StringBuilder sb1=new StringBuilder("abc");
StringBuilder sb2=new StringBuilder("xyz");
method(sb1,sb2);
}
public static void method(StringBuilder sb1,StringBuilder sb2)
{
ArrayList al=new ArrayList();
//a1用于存储题干中已知的错误组合。
ArrayList a2=new ArrayList();
//a2用于存储经while循环判断之后得到的赛程表。
al.add("ax");
al.add("cx");
al.add("cz");
while (sb1.length()!=0)
//反复遍历sb1,sb2每有一种组合符合要求,就在sb1,sb2中删掉相应的元素,
//直到找到所有符合题意的组合,即sb1,sb2都为空。
{
for (int i=0;i<sb1.length() ;i++ )
{
String temp=null;
int count =0,index=0;
for (int j=0; j<sb2.length();j++ )
{
if(!al.contains(sb1.charAt(i)+""+sb2.charAt(j)))
{
temp=sb1.charAt(i)+"-"+sb2.charAt(j);
count++;
index=j;
}
}//在满足已知条件下,判断sb1中一个元素与sb2中某一元素组合的可能,用count记录可能组合数
//就像ay,az都不在集合a1中,此时count==2。当循环到c时,只有cy符合要求了,此时count==1.
//也就是说,当且仅当count==1的时候,该组合才是所求一种组合。
if(count==1)
{
a2.add(temp);
sb1.deleteCharAt(i);
sb2.deleteCharAt(index);
}
}
}
String[] str=(String[])a2.toArray(new String[a2.size()]);
//将获取到的组合都存入a2中,并将a2转换为一个String数组。
Arrays.sort(str);
//将该数组按自然顺序排序。
System.out.println("甲乙两队的赛程表为:");
for(int i=0;i<str.length;i++)
System.out.println(str[i]);
}
}
复制代码
作者:
zz_job
时间:
2014-10-13 00:51
牛,这考的..全是思想啊...
作者:
jtshawn
时间:
2014-10-13 09:40
看懂。给2L 赞一个
作者:
kakasa
时间:
2014-10-13 17:43
李天富 发表于 2014-10-12 23:55
赞一个,!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2