查找多维数组中整数的出现次数(以C++为单位)
Finding the number of occurences of an integer in multidimensional array in C++
我希望找到在以下逻辑定义的给定多维数组中作为输入的数字的出现次数:
...
int n,x,count=0;
cin>> n >> x;
int a[n][n] ;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
a[i][j]= i*j ;
}
}
for( int i=1;i<=n;i++)
{
for( int j=1;j<=n;j++)
{
if(a[i][j] == x)
++count;
}
}
cout<< count ;
...
例如,如果我输入为 6(n
( 和 12(要找到它的出现次数,x
这里(。多维数组如下所示:
1 2 3 4 5 6
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
5 10 15 20 25 30
6 12 18 24 30 36
现在,这里 12 的出现次数是 4(计数(。 但是当我给n
10 和x
5 时,程序停止工作。我似乎找不到正在发生的事情。有人可以帮助我吗? 另外,我可以通过什么方式修改我的代码? 如何在不改变程序逻辑的情况下处理n
大到 1000 或 10k 的情况?
C/C++ 中的索引从0
开始。如果一个数组被声明为具有大小n
如int a[n]
,则唯一有效的索引是:0,1,...,n-1
即[0,n[
如果你越界了,未定义的行为是意料之中的。应该是你的情况。
按如下方式修复循环(请注意新边界和i
和j
中的+1
(
int a[n][n];
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]= (i+1)*(j+1) ;
#include <algorithm>
// ...
for(int i = 0; i < n; ++i) {
count += std::count(a[i], a[i] + n, x);
}
或更简单的版本:
std::cout << std::count(a[0], a[0] + n*n, x);
相关文章:
- 以天C++为单位的两个时间戳之间的差异
- 如何以毫秒为单位获取开始时间和 now() 之间的毫秒差异(以 C++为单位?
- 从原始字节解码协议缓冲区(以 C++为单位)
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 编写以 C++ 为单位返回值的函数
- 以C++为单位进行运行长度编码
- 如何找到两个日期之间的时间差异(以秒和纳秒为单位)?
- arr[n] 是否以 C++ 为单位打印数组的长度?
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 以 C++ 为单位具有输出限制的排列
- 以 GDB 为单位指定浮点精度
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- 如何在没有硬编码的情况下以C++为单位获取类数组的长度?
- 指针引用的生存期(以 C++为单位)
- 以字符为单位设置控制台大小
- 获取嵌套 stl 容器的大小(以字节为单位)
- 有没有一种 STL 方法可以找到字符串的所有排列,给出一个以 C++ 为单位的大小?
- 二进制数组中最大连续 1 的起始和结束索引,以 C++ 为单位
- 正向声明的枚举,默认值以.h为单位
- 常量"C"占用的空间(以字节为单位)