萌新吃鸡苟分时对人数分配的想法,求多解法,欢迎大佬们分享

事情是这样的,在某天吃鸡苟分又苟到了前五的时候,我趴在草丛里,突发奇想,有了如下的问题:

首先在和平精英里四人模式中,四人一组(当然可能有单人或者插进去的人机,这个不影响接下来的问题),每当剩下五队人的时候,游戏会提醒你已经胜利(即队伍进入了前五),

我突然好奇,在这个时间点,剩下队伍的人数分配是什么样的呢?有多少种情况?可否按照人数由多到少一一列举出来且不重复?

问:给出提醒时剩下的人数(5≤N≤20),列举出可能的情况(不可重复)

(假设个人战力相同,列举时尽可能按吃鸡的难易程度排列)

如提醒的时候,显示只剩下了7个人,那么情况数为2

输入:

7

输出:

3,1,1,1,1  

2,2,1,1,1

(显然其他队伍都是一个人的时候,三人队更占优势)

 或者 

枚举(好丑....)

#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
	int N;
	while((cin>>N)&&N>=5&&N<=20)
	{
		int cnt=0;
		for(int i=4;i>=1;i--){
			for(int j=i;j>=1;j--){
				for(int k=j;k>=1;k--){
					for(int w=k;w>=1;w--){
						for(int f=w;f>=1;f--){
							if(i+j+k+w+f==N){
								printf("第%d种: %d %d %d %d %d\n",++cnt,i,j,k,w,f); 
							}
						}
					}
				}
			}
		}
		printf("共有%d种\n",cnt);
	}
	printf("Wrong input.");
	return 0; 
} 

posted @ 2021-06-20 20:55  泥烟  阅读(34)  评论(0编辑  收藏  举报