本帖最后由 系统管理员 于 2013-3-25 22:45 编辑
1、有N个人参加100米短跑比赛。跑道为8条。程序的任务是按照尽量使每组的人数相差最少的原则分组。
例如:
N=8时,分成1组即可。
N=9时,分成2组:一组5人,一组4人。
N=25时,分4组:7、6、6、6。
请编程计算分组数字。要求从键盘输入一个正整数(1~100之间,不必考虑输入错误的情况),表示参赛的人数。程序输出每个组的人数。从大到小顺序输出,每个数字一行。
比如,用户输入:25
程序输出:
7 6 6 6- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- public class TestGroup
- {
- public static void main(String[] args)
- {
- Scanner scanner = new Scanner(System.in);
- List<Integer> list = getArray(scanner.nextInt());
- scanner.close();
- System.out.println(list.size());
- for(int i = 0; i < list.size(); i++)
- {
- System.out.print(list.get(i) + " ");
- }
- }
- public static List<Integer> getArray(int number)
- {
- List<Integer> list = new ArrayList<Integer>();
- int length = number/8;
- if(number%8 == 0)
- {
- for(int i = 0; i < length;i++)
- {
- list.add(8);
- }
- }
- else
- {
- length++;
- int base = number/length;
- int temp = number%length;
- for(int i = 0; i < length; i++)
- {
- if(i < temp)
- {
- list.add(base + 1);
- }
- else
- {
- list.add(base);
- }
- }
- }
- return list;
- }
- }
复制代码 |
|