
Сообщение от
nexen
Жанерке, вообще, существует четкий алгоритм. Относится к комбинаторике.
я его не читал, но свой предложу, может корявый немного:
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| #include <iostream>
int main()
{
int n,i,j,c=1,z,g;
bool t;
std::cin>>n;
for (i=1; i<=9; i++)
{
c=i;
std::cout<<i<<" ";
g=1;
z=1;
if (c*10<n)
while (c*10<=n) {c*=10; g*=10;}
while (z*10<=n) {z*=10; }
j=i*10;
while (c>=10)
{
t=(c==z)? (j<=n):(j<(i+1)*g);
while (t)
{
std::cout<<j<<" ";
j = (n>=j*10) ? j*10: j+1;
t=(c==z)? (j<=n):(j<(i+1)*g);
}
c/=10;
g/=10;
if (c>1) j=c+1;
}
}
std::system ("Pause");
return 0;
} |
|
Добавлено через 11 минут
поторопился

Понимаю что 16 строку целесообразней вынуть за пределы цикла for. Алгоритм составлял руками думая и одновременно набирая
