#include <iostream>
#include <vector>
using namespace std;
// numsize = 3; e: 3 9
/*
0 1 2 4 5 6 7 8
0 1 2 4 5 6 7 8
0 1 2 4 5 6 7 8
*/
bool inVecor(int k, vector<int> excludeNum){
for (auto a : excludeNum){
if (a == k){
return true;
}
}
return false;
}
/*
3%9 = 1
3
0
*/
void getcolv(int i, int colNum, vector<int> &rst,int numsize){
for (int iz = 0; iz < numsize; ++iz){
rst.push_back(0);
}
int k = 0;
while (i){
rst[k] = (i%colNum);
i = i / colNum;
++k;
}
}
// numsize = 3; e: 3 9
/*
0 1 2 4 5 6 7 8
0 1 2 4 5 6 7 8
0 1 2 4 5 6 7 8
*/
vector<vector<int>> getNum(int numsize,vector<int> excludeNum)
{
vector<vector<int>> matrix,rst;
vector<int> rowe;
for (int i = 0; i <= 9; ++i){
if (inVecor(i, excludeNum)){
continue;
}
rowe.push_back(i);
}
// build matrix
for (int i = 0; i < numsize; ++i){
matrix.push_back(rowe);
}
// build multi num;
int base = 1;
for (int i = 0; i < numsize; ++i){
base *= (10 - excludeNum.size());
}
//
// numsize = 3; e: 3 9
/*
0 1 2 4 5 6 7 8
0 1 2 4 5 6 7 8
0 1 2 4 5 6 7 8
*/
vector<int> colv;
vector<int> rowr;
for (int i = 0; i < base; ++i){
getcolv(i, 10 - excludeNum.size(), colv,numsize);
for (int i = 0; i < numsize; ++i){
//cout << matrix[i][colv[i]] << " ";
rowr.push_back(matrix[i][colv[i]]);
}
rst.push_back(rowr);
rowr.clear();
}
return (rst);
}
int main(){
vector<vector<int>> rst;
vector<int> tt;
for (int i = 0; i < 3; ++i){
tt.push_back(i+2);
}
rst = getNum(4, tt);
int indx = 0;
for (int i = 0; i < rst.size(); ++i){
cout << indx++<<" === ";
for (int j = 0; j < rst[0].size(); ++j){
cout << rst[i][j] << " ";
}
cout << endl;
}
system("pause");
}
电话 Num
最新推荐文章于 2023-12-26 10:46:59 发布