问题描述
- c语言 设计一个找出同数值部分排列的程序
- 定义一行的整数的输入有相同连续的地方为“同数值部分排列”
找出有最长的同数值部分排列,并输出排列长度及这个数字的程序。
最长的同数值部分排列有两个以上的时候,输出最后那个。
输入的数字用空格或者换行区别例1
输入:
0 1 1 1 2 0 0
输出:
3 1例2
输入:
1 1 1 3
1 2 2
2
3
输出:
3 2
解决方案
#include <stdio.h>int main(){ int x; int c = 0; int px = -1; int maxv = -1; int maxc = 0; while (scanf(""%d"" &x) != EOF) { if (x == px) c++; else c = 1; if (c >= maxc) { maxc = c; maxv = x; } px = x; } printf(""%d %d"" maxc maxv); return 0;}
1 1 1 3
1 2 2
2 3
^Z
3 2Press any key to continue
解决方案二:
其实还好这道题,用一个二维数组,第二纬度直接存改点出线的次数,然后遍历一遍找出出线次数最多且数最大的即可
时间: 2024-12-31 00:52:48