使用 C++ 打印所有小于 N 且最多有 2 个唯一数字的数字
此问题给定了一个整数 N,我们打印出所有小于 N、最多有 2 个唯一数字的数字,即最多 2 个不同的数字可用于创建该数字。
我们用一个示例来理解此问题 −
Input: N = 17 Output: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
为了解决这个问题,我们将生成仅有两个唯一数字的所有数字。我们的数字生成过程从 0 开始,并在我们的数字等于或大于 N 时结束。对于选择的两个唯一数字,使用 num*10+i 和 num*10+j 递归地生成数字。在此过程中可能会出现一些重复的数字。因此,我们可以使用 集合 来存储数字以避免这种情况。
示例
此程序说明了我们解决问题的方法的实现
#include <bits/stdc++.h>
using namespace std;
set<int> numbers;
void generateNumbers(int n, int num, int i, int j){
if (num > 0 && num < n)
numbers.insert(num);
if (num >= n)
return;
if (num*10+i > num)
generateNumbers(n, num*10+i, i, j);
generateNumbers(n, num*10+j, i, j);
}
void printUniqueBitNumber(int n){
for (int i = 0; i <= 9; i++)
for (int j = i + 1; j <= 9; j++)
generateNumbers(n, 0, i, j);
cout<<"The numbers are generated are : ";
while (!numbers.empty()) {
cout<<*numbers.begin()<<" ";
numbers.erase(numbers.begin());
}
}
int main(){
int n = 17;
printUniqueBitNumber(n);
return 0;
}输出
The numbers are generated are : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
本页面中有广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP