【题】
等值数列段
如果一个数列中的某一段(至少有两个元素)的各元素值均相同,则称之为等值数列段。等值数列段中元素的个数叫做等值数列段的长度。
输入:
由N个元素组成的整数数列A(其中N<=50)
输出:
A中长度最大的所有等值数列段的始末位置,如果没有等值数列段,则输出No equal number list.
说明:
始末位置是指数组下标,即0表示第一个元素。
如果有多个同等长度的等值数列,只输出第一个等值数列的起始位置。
当在一个LIST中出现两个等长的连续串的时候,我们的答案应该是第一个等长串。
| | 测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 |
|---|---|---|---|---|---|
| 测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
| 测试用例 2 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |

完整代码:
#include "stdio.h"
int main(int argc, char **argv)
{
int n, i, arr_src[100] = {0}, max= 0, arr_res[100] = {1};
scanf("%d", &n);
getchar();
for(i = 0; i < n; i++)
{
scanf("%d", &arr_src[i]);
getchar();
if (i > 0)
{
if(arr_src[i] == arr_src[i-1])
{
arr_res[i] = arr_res[i-1] + 1;
}
else if(arr_src[i] != arr_src[i-1])
{
arr_res[i] = 1;
}
}
}
int start, end;
for(i = 0; i < n; i++)
{
if(arr_res[i] > max)
{
max = arr_res[i];
end = i;
}
}
start = end - (max - 1);
if(max > 1)
printf("The longest equal number list is from %d to %d.\n", start, end);
else
printf("No equal number list.\n");
return 0;
}
282



被折叠的 条评论
为什么被折叠?



