公司发福利,一共有n个部门(0<=n<=26)共x个人。现在要求所有人随便排队,然后从中挑出人数最多的一拨人,要满足是连续的且两两互不属于同一部门的。

1 篇文章 0 订阅

比如:现有A、B、C、D四个部门,共12人。现在排队ACBBDCAABAAA。那么找出的就是BDCA。

eg:
     输入
          ACBBDCAABAAA
     输出
          BDCA
eg:
    输入
          ABCDEAC
    输出
          ABCDE
import java.util.*;

public class Main {
	
    public static void main(String[] args) {
    	System.out.println("请输入大写字母的任意排列组合:");
    	Scanner input = new Scanner(System.in);
    	String x = input.next();
    	Main ss = new Main();
    	ss.sort(x);
    
    }
    public void sort(String x) {
	   char res[] = x.toCharArray();
	   if(res.length == 0)
		   System.out.print("输入不符合要求");
	   if(res.length == 1)
		   System.out.print(x);//输入单个字母
	   else {
	       int max[] = new int[res.length];//记录第i个字母开头满足条件的字符串长度
	       for(int arr=0;arr<res.length;arr++) {
		       max[arr] = 1;
	       }
	   //
	       for(int i=0;i<res.length;i++) {
		       boolean trag = true;
		       for(int j=i+1;j<res.length;j++) {
		    	   for(int p=i;p<j;p++) {//判断第j个能否加入到前面的字符串中去
			    	   if(res[p] == res[j]) {
			    		   trag = false;
			    		   break;}
				   }
			       if(trag) { max[i]++; } 
		       }
	       }
	   //
	       int q = 0;
	       for(int p=0;p<res.length;p++) {
		       if(max[p]>max[q])
		    	   q = p;
	       }
	   
	       for(int k=0;k<max[q];k++) {
		       System.out.print(res[q+k]);
	       }
	   }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值