您的位置:首页 > 编程语言 > C语言/C++

CCF CSP认证考试历年真题 数列分段 C语言实现

2017-10-19 10:57 435 查看
试题编号: 201509-1

试题名称: 数列分段 时间限制: 1.0s 内存限制:256.0MB

问题描述 :

  给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多

少段? 输入格式

  输入的第一行包含一个整数n,表示数列中整数的个数。

  第二行包含n个整数a1, a2, „, an,表示给定的数列,相邻的整数之间用一个

空格分隔。 输出格式

  输出一个整数,表示给定的数列有多个段。

样例输入

8

8 8 8 0 12 12 8 0

样例输出

5 样例说明

  8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,

最后一个0是第五段。 评测用例规模与约定

  1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。 提交

确认:

以下必须全部满足才能提交:  

我的程序没有使用package语句来定义包的信息。(如果定义了将无法评测)  我的程序的主类名称是Main,主类的定义是public class Main。我的程序运行的入口是主类Main中的main函数,定义为public static void main(String[] args)。  我的程序是从标准输入(System.in)中读入数据的(使用Scanner等类来处理

System.in的输入视为满足条件),结果是输出到标准输出(System.out)的。  我的程序中没有“请输入n”之类的输入输出提示,也没有输出中间的结果,所有的输出内容都与题设中的输出格式相对应。我的输出格式(包括换行和大小写等)与题
设中输出格式的要求相符。

分析:

很简单的一道题,不过这道题其实可以不用创建一个整形数组也能判断,再简单的程序也要养成对内存优化的习惯。

代码在此:

#include<stdio.h>

int main()
{
int n;
int s = 0;

scanf("%d", &n);
int last;
scanf("%d", &last);
for(int i = 1; i < n; i++)
{
int temp;
scanf("%d", &temp);
if(temp == last){
continue;
} else {
last = temp;
s ++;
}
}
s ++;

printf("%d", s);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: