报数游戏的题解直接给我坐下

【题目描述】
温老师为了带小朋友们巩固小学数学知识,特地设计了一个报数游戏。 小朋友们在n块空地上玩报数游戏,遵循如下规则

  1. 每个小朋友手里都有一个写了数字的纸条,在报数的时候需要将纸条上的数字报出来
  2. 报数最小的小朋友们离开场地
  3. 每个小朋友都会做数学计算,在一轮游戏报数最小的小朋友们离场之后,剩余的所有小朋友会将手里的纸条上的数字减去刚刚离场的小朋友们纸条上的数字。并作为新的报数的数字。
    这个游戏一直持续到所有小朋友都离场才会结束,现在请你输出最多可以进行报数游戏的轮次。
    【输入格式】
    一共两行,第一行有一个整数,表示空地的数量 第二行有使用空格分隔的n个整数,非0整数表示当前这块地上小朋友纸条上的初始数字,0表示当前地块上没有小朋友
    【输出格式】
    一共一行,一个整数,表示游戏最多可以进行的轮次
    思路:打篮球先打个篮球冷静一会儿

开玩笑的现在开始正题

众所周知读完这道题的人因该都知道如果这道题的最小值如果有重复的话那么就会全都变成0,所以为了避免麻烦可以用set
众所周知,set是个好东西,因为它可以去重
AC代码呈上

↑↑↑

管理员删帖:禁止发 AC 代码

1 个赞

此为代码解释:

这个为伪代,码请勿抄袭,后果自负

        n1=n;
	for(int i=1; i<=n; i++) {//在第二题中,0代表没有小盆友,所以我们要特判一下,把0的样例列举出来用一个变量记录0的数量。
		b[i]=1;
		cin>>a[i];
		if(a[i]不等于0){
			c[i]=a[i];
		}
		else ans+=1;
	}
	b[1]=c[1];
	for(int i=1; i<=n-ans; i++) {//把数字放入一个个桶中,用桶来记录不同小朋友拿着不同的数字这样就是可以解决这个题目的一种比较简便的解法
		if(c[i]==b[i]){
		}
		else {
			b[i+1]=c[i];
		}
	}
	for(i~n-ans){//判断每个桶里面是否有小朋友,有计数数组+=1,最后输出。
		·················
	}
	cout<<sum;

此帖子已被社区举报,现已被临时隐藏。

1 个赞

@Dalton

1 个赞

关贴

2 个赞
  1. 没有AC代码只有伪代码
    2)回老帖
    3)直接制裁

(这样回老帖的都没有举报的)