我實際上花了一些時間並編寫了答案。這是一個非常有趣的問題。有很多的方式來解決這個問題:
- 花式迭代
- 遞歸
- 迭代,而突然離開球隊
- 使用一個單獨的結構,以「標記」團隊爲已處理
此圖片可能會幫助您:
0 1 2 3
0 - A A A
1 B - A A
2 B B - A
3 B B B -
矩陣的X軸和Y軸顯示您想要的答案。組A或組B將給你答案。請注意,您不希望團隊按矩陣中的破折號表示自己玩遊戲。下面是使用迭代3個選項:
public class BBall {
public static void main(String args[]) {
List<String> teams = new ArrayList<String>();
teams.add("Boston");
teams.add("LA");
teams.add("New York");
teams.add("Chicago");
teams.add("Dallas");
// This option might be a little easier to read.
int index1 = 0;
System.out.println("Easy to read:");
for (String team1 : teams) {
index1++;
for (int index2 = index1; index2 < teams.size(); ++index2) {
System.out.println(team1 + " plays " + teams.get(index2));
}
}
System.out.println("This is set A:");
for (int x = 1; x < teams.size(); x++) {
for (int y = x - 1; y >= 0; y--) {
System.out.println(teams.get(x) + " plays " + teams.get(y));
}
}
System.out.println("This is set B:");
for (int x = 0; x < teams.size() - 1; x++) {
for (int y = x + 1; y < teams.size(); y++) {
System.out.println(teams.get(x) + " plays " + teams.get(y));
}
}
}
}
輸出:
易於閱讀:
Boston plays LA
Boston plays New York
Boston plays Chicago
Boston plays Dallas
LA plays New York
LA plays Chicago
LA plays Dallas
New York plays Chicago
New York plays Dallas
Chicago plays Dallas
此設置答:
LA plays Boston
New York plays LA
New York plays Boston
Chicago plays New York
Chicago plays LA
Chicago plays Boston
Dallas plays Chicago
Dallas plays New York
Dallas plays LA
Dallas plays Boston
此設置B:
Boston plays LA
Boston plays New York
Boston plays Chicago
Boston plays Dallas
LA plays New York
LA plays Chicago
LA plays Dallas
New York plays Chicago
New York plays Dallas
Chicago plays Dallas