【发布时间】:2021-09-05 11:31:11
【问题描述】:
我有一个 C++ 问题:
输入一个数字序列 [ 0 - 9 ] 并以三个连续的 9 结尾,在标准输出上打印由三个连续相等数字组成的子序列的数量。
示例:给定序列 { 1 2 2 2 2 0 0 3 3 3 7 9 9 9 },识别子序列:
{ 2 2 2}, { 2 2 2 }, { 3 3 3 } .
因此,程序应该在标准输出上打印数字 3,等于存在的序列。
我尝试使用数组。我的代码最终是这样的:
int main(){
int i;
int N = 0, A[100];
while( (A[i] && A[i+1] && A[i+2]) != 9 ){
N++;
for( i = 0; i <= N; i++ ){
cout << "A[" << i + 1 << "]:";
cin >> A[i];
}
for(int i = 0; i <= N; i++ ){
cout << "A[" << i + 1 << "]:" << A[i];
}
}
}
我的问题是,我不知道如何连续三个 9 终止序列。所以我尝试使用一个数组。我希望有人可以帮助我详细说明这个想法。
【问题讨论】:
-
您可以在不将输入存储到数组的情况下执行此分配。而且由于工作是检测重复的数字,所以当您检测到重复的 9 时停止应该是微不足道的。
-
或者,使用
std::vector及其自动调整大小的属性。 -
问题标题似乎与问题内容毫无共同之处。这使得这个问题对未来的提问者不太有用。如果您正在寻求有关检测子序列的帮助,您是否会费心阅读有关用户创建数组的问题?
标签: c++ arrays loops for-loop subsequence