2021-09 CCF-CSP 非零段划分 C和C++混写
前言
本次学习所用设备为微软Surface pro4
,操作系统为windows10
。
注意事项
(1)CFF-CSP考试提交一定要使用C++编译环境 。
题目
实现代码如下
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
//完成第一行的输入
int n,i;
scanf("%d",&n);
int number[n+5];
int number_temp[n+5];
int max;
//输入数据
for(i = 0;i < n;i++)
{
scanf("%d",&number[i]);
}
//对数据进行排序
for(i = 0;i < n;i++)
{
number_temp[i] = number[i];
}
sort(number_temp,number_temp+n,less<int>());
//得到最大值
max = number_temp[n-1] + 1;
//得到非零段数据并且初始化
int not_zero_count[max+5];
for(i = 0;i < max;i++)
{
not_zero_count[i] = 0;
}
//对数值进行处理
int p;
int max_result;
for(p = 1;p <= max;p++)
{
//对数组中的数值进行处理得到0
for(i = 0;i < n;i++){
if(number[i] < p)
{
number[i] = 0;
}
}
/* 输出进行验证
for(i = 0;i < n;i++){
printf("%d ",number[i]);
}
printf("\n");
*/
for(i = 0;i < n + 1;i++)
{
if((number[i] != 0) && (number[i + 1] == 0)){
not_zero_count[p-1]++;
}
else if( (number[n - 2] == 0) && (number[n - 1] != 0) && (i == n - 1)){
not_zero_count[p-1]++;
}
}
printf("%d\n",not_zero_count[p-1]);
}
//升序排列(默认)
sort(not_zero_count,not_zero_count + max,less<int>());
max_result = not_zero_count[max - 1];
printf("%d",max_result);
return 0;
}