蓝桥杯第二天:2023省赛C 1题 分糖果

java 复制代码
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n,x;
		n = scan.nextInt();
		x = scan.nextInt();
		
		String res1;
		res1 = scan.next();
		char res[] = res1.toCharArray();
		Arrays.sort(res);
		//第一种情况:糖果是aaaaaa...这种类型的(一个种类的)
		if(res[0]==res[n-1]) {
		int n1 = n/x;
		for(int i = 0;i<n1;i++) {
			 System.out.print(res[i]);
		}
			n1 = n%x;//看看有没有剩余的
      if(n1!=0)
	System.out.print(res[0]);
		
			  //  int count = n / x + (n % x == 0 ? 0 : 1);
	      //       for (int i = 0; i < count; i++) System.out.print(res[i]);
		}
		//第二种情况 :糖果是假设aaabbbccc x=1(x小于首字母的个数) 
		else if(res[0]==res[x-1]) {// aaabcdefg 三个人 这种必须是 a  a  abcdefg 如果剩下的这些(bcdefg)让三个人平分的话,就不能保证最小的是ab..打头的了
			
			for(int i = x-1;i<n;i++) {
				 System.out.print(res[i]);
			}	
		}
		//第三种情况 :糖果是假设abbbccc x=5(x小于首字母的个数) abceeee 3
		else if(res[0]!=res[x-1]){//如abceeee 3 这个例子, a 打头给一个人  b 打头给一个人, c 给一个人 剩下eeee这些分给a 、b打头的这俩,最大的还是c
			System.out.print(res[x-1]);
		}
	}

代码虽然能通过100%测试用例(20个)但是有一种情况不能处理

这种情况应该输出ab就是三个都一样,

把第二部分代码修改一下就好了,加一种判断这种类型:

好了完整代码是这样的

java 复制代码
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n,x;
		n = scan.nextInt();
		x = scan.nextInt();
		
		String res1;
		res1 = scan.next();
		char res[] = res1.toCharArray();
		Arrays.sort(res);
		//第一种情况:糖果是aaaaaa...这种类型的(一个种类的)
		if(res[0]==res[n-1]) {
		int n1 = n/x;
		for(int i = 0;i<n1;i++) {
			 System.out.print(res[i]);
		}
			n1 = n%x;//看看有没有剩余的
      if(n1!=0)
	System.out.print(res[0]);
		
			  //  int count = n / x + (n % x == 0 ? 0 : 1);
	      //       for (int i = 0; i < count; i++) System.out.print(res[i]);
		}
		//第二种情况 :糖果是假设aaabbbccc x=1(x小于首字母的个数) 
		else if(res[0]==res[x-1]) {
			// aaabcdefg 三个人 这种必须是 a  a  abcdefg 如果剩下的这些(bcdefg)让三个人平分的话,就不能保证最小的是ab..打头的了
			int flag = 0;	
			if(n%x==0) {
			 flag = 1;	
			for(int i = 1;(x*(i+1)-1)<n;i++) {
				if(res[x*i]!=res[x*(i+1)-1]) {
					flag = 0;
					break;
				}
			}
			}
			if(flag==0) {
			for(int i = x-1;i<n;i++) {
				 System.out.print(res[i]);
			}	}
			else {
				for(int i =0;i<n;i=i+x) {
					 System.out.print(res[i]);
				}
			}
			}
			
		//第三种情况 :糖果是假设abbbccc x=5(x小于首字母的个数) abceeee 3
		else if(res[0]!=res[x-1]){//如abceeee 3 这个例子, a 打头给一个人  b 打头给一个人, c 给一个人 剩下eeee这些分给a 、b打头的这俩,最大的还是c
			System.out.print(res[x-1]);
		}
	}

进行调试:可以满足这种情况了

相关推荐
和光同尘@1 小时前
66. 加一 (编程基础0到1)(Leetcode)
数据结构·人工智能·算法·leetcode·职场和发展
rit84324992 小时前
基于灰狼算法(GWO)优化支持向量回归机(SVR)参数C和γ的实现
c语言·算法·回归
饭碗的彼岸one3 小时前
C++设计模式之单例模式
c语言·开发语言·c++·单例模式·设计模式·饿汉模式·懒汉模式
hope_wisdom3 小时前
C/C++数据结构之栈基础
c语言·数据结构·c++··stack
野犬寒鸦4 小时前
力扣hot100:环形链表(快慢指针法)(141)
java·数据结构·算法·leetcode·面试·职场和发展
Miraitowa_cheems4 小时前
LeetCode算法日记 - Day 38: 二叉树的锯齿形层序遍历、二叉树最大宽度
java·linux·运维·算法·leetcode·链表·职场和发展
劲镝丶5 小时前
malloc概述
c语言·开发语言·c++
秃顶老男孩.5 小时前
异步处理(前端面试)
前端·面试·职场和发展
努力努力再努力wz6 小时前
【C++进阶系列】:万字详解红黑树(附模拟实现的源码)
java·linux·运维·c语言·开发语言·c++
路弥行至6 小时前
从0°到180°,STM32玩转MG996R舵机
c语言·数据库·stm32·单片机·嵌入式硬件·mcu·mongodb