求助,为什么崩掉了?大佬帮帮忙吧,Thanks♪(・ω・)ノ
  • 板块学术版
  • 楼主1_4_1_2
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/7/16 10:35
  • 上次更新2023/11/4 14:40:35
查看原帖
求助,为什么崩掉了?大佬帮帮忙吧,Thanks♪(・ω・)ノ
371075
1_4_1_2楼主2021/7/16 10:35

题目

拍照

有 N 朵花,编号为 1…N(1≤N≤100),排列成一行。花 i 有 pi 朵花瓣(1≤pi≤1000)。 你决定给这些花拍些照片。具体地说,对于每一对满足 1≤i≤j≤N 的花 (i,j),你会给从花 i 到花 j 之间的所有花(包括 i 和 j)拍一张照。

后来 Bessie 查看这些照片时注意到有些照片里存在平均的花,所谓平均的花指的是一朵恰好有 P 朵花瓣的花,其中 P 等于照片中所有花的花瓣数量的平均值。

你的照片中有几张存在平均的花?

输入格式(从终端/标准输入读入): 输入的第一行包含 N。第二行包含 N 个空格分隔的整数 p1…pN。

输出格式(输出至终端/标准输出):

输出存在平均的花的照片数量。

输入样例:

4 1 1 2 3

输出样例:

6 每张仅包含一朵花的照片均会被计入答案(在这个样例中有 4 张)。另外,在这个样例中 (i,j) 为 (1,2) 和 (2,4) 所对应的照片也存在平均的花。

代码:

#include<iostream> 
#include<cstdio>
#include<algorithm>

using namespace std;

int n;//花的数量
int a[110];//每个花的花瓣数
int m;//答案

int orz(int i,int j)//i,j为区间首尾
{
	int t=0;//平均数
	for(;j<=n;j+=1,i+=1)
	{
		for(int g=i;g<=j;g++)
		{
			t+=a[g]; 
		}
		t/=(j-i+1);//求平均
		for(int g=i;g<=j;g++)
		{
			if(a[g]==t)
			{
				m++;
				break;
			}
		} //找平均的花
	}
	if(j==n)return 0;
	else orz(1,j+1);//扩大区间
}

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	orz(1,2);
	printf("%d",m+n);
	return 0;
}

结果

大佬请帮忙看一下吧,谢谢啦

2021/7/16 10:35
加载中...