在矩阵C 中使用Bool函数检查重复数字
check duplicate numbers with bool function in matrix c++
我创建了一个随机数
的矩阵[10] [10]for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
matrix[i][j] = rand() % 100 ;
}
}
,但是我需要使用布尔函数进行检查重复数字,并且如果再次随机使用相同的使用。我可以做什么?
测试重复项的有效方法是将已插入矩阵中的元素存储在std::vector
中并用于std::find
。这允许检查是否已经包含在先前存储的元素中的新生成的随机数。如果发现它,则应生成另一个随机数并重复测试。
#include <iostream>
#include <cstdlib>
#include <vector>
#include <algorithm>
bool alreadySelected(int n, int nvalues, int values[][10]) {
std::vector<int> v(&values[0][0], &values[0][0] + nvalues );
return (std::find(v.begin(), v.end(), n) != v.end());
}
int main() {
int matrix[10][10];
for (int i = 0; i < 10; i++) {
int n;
bool dupe;
for (int j = 0; j < 10; j++) {
int nvalues = i * 10 + j;
do {
n = std::rand() % 100 ;
dupe = alreadySelected( n, nvalues, matrix );
} while ( dupe );
matrix[i][j] = n;
std::cout << matrix[i][j] << " ";
}
std::cout << "n";
}
}
生成此类矩阵的一种更简单的方法是使用std :: Random_shuffle。
有多种实现此目的的方法。
- 编写一个返回bool并需要10*10矩阵大小的函数。计算所有数字的总和。将此结果与1 ... 99的数字总和进行比较。如果两者都匹配,则没有重复返回true,否则重复返回false。可以使用n(n 1)/2来计算1..99的总和,其中n =99。
- 在函数中创建大小为100的数组。将所有数组元素以0的元素初始化。迭代矩阵,将矩阵元素用作数组的索引。如果数组在该位置包含1个,则在该索引0中获得重复元素,否则将数组元素0。
实施第一种方法
#include <iostream>
#include <cstdlib>
#include <iomanip>
#define ROW 10
#define COL 10
#define MOD 100
int main()
{
int mat[ROW][COL];
int sum = 0;
int range_sum = ((MOD-1)*(MOD))/2; // n = MOD-1, sum = n(n+1)/2
while(true){
sum = 0;
for(int i = 0; i < ROW; i++){
for(int j = 0; j < COL; j++){
mat[i][j] = rand()%MOD;
sum += mat[i][j];
}
}
if(sum==range_sum){
break;
}
}
for(int i = 0; i < ROW; i++){
for(int j = 0; j < COL; j++){
std::cout << std::setw(2) << mat[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
相关文章:
- 检查函数返回类型是否与STL容器类型值相同
- 如何检查函数是否在LLVM Instrumentation pass的ModulePass的系统头文件中定义?
- 何时在类中检查函数的定义?
- 素数检查 C++ 函数输出非素数的数字
- 如何检查函数是否真的获得了定义为 const 的变量?
- 检查函数是否可调用
- 如何检查函数是在C++单元测试中的析构函数中调用的
- 使用 SFINAE 检查函数 std::to_string 是否存在类型
- 如何检查函数模板是否专用?
- 如何检查函数中的模板参数是否与给定类型别名的专用化匹配
- 如何检查函数中不同变量的大小
- C++如何检查函数是否接收到无符号int
- 使用模板递归检查函数方法是否存在
- 如何在Visual studio C++中检查函数运行时间
- 检查函数是否单调
- 如何检查函数是否在编译时在全局范围内声明
- 检查函数是否被调用
- Boost.Hana:如何检查函数是否具有特定类型的专用性
- 如何检查函数参数是否恒定
- C++ 编译时检查函数参数