http://www.javaeye.com/topic/88204
- package com.maodajun.javaeye1;
-
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
-
- public class BaiDuQuest {
-
- public String teamAndImpossable(int peoples,int impossable){
- int maximpossable= maxImpossable(peoples);
- maximpossable -=impossable;
- List list =selfTeam(peoples,maximpossable,new ArrayList());
- if(list!=null){
- return "YES";
- }
- return "NO";
- }
-
- public int maxImpossable(int poples){
-
- if(poples==2){
- return 1;
- }else if(poples<1){
- return 0;
- }
- poples--;
- return maxImpossable(poples)+poples;
- }
-
- public int maxFirstTeam(int peoples, int maximpossable){
- int tmp = 0 ;
- if(maxImpossable(peoples)
- return -1;
- }
- for(int i = peoples ; i >1 ; i--){
- tmp = maxImpossable(i);
- if(tmp <= maximpossable){
- return i;
- }
- }
- return tmp;
- }
- public List selfTeam(int peoples , int maximpossable ,List list ){
- int max = maxFirstTeam(peoples,maximpossable);
- if(max==0){
- return list;
- }else if (max==-1){
- return null;
- }else{
- list .add(""+max);
- return selfTeam(peoples-max,maximpossable-maxImpossable(max),list);
- }
- }
- public static void main(String[] arg){
- BaiDuQuest quest = new BaiDuQuest();
- int people = 5;
- for(int i = quest.maxImpossable(people) ; i >=0; i--){
- List list =quest.selfTeam(people,i,new ArrayList());
- int count = 0 ;
- if(list!=null){
- for(int j = 0 ; j < list.size(); j ++){
- count +=Integer.parseInt(list.get(j).toString());
-
- }
-
- list.add(""+(people-count));
- }
- System.out.println(quest.maxImpossable(people)-i+":"+list);
- }
- }
-
-
-
- }
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12467/viewspace-148151/
,如需转载,请注明出处,否则将追究法律责任。