이 문제에서는 숫자 N이 주어지고 모든 n자리 숫자를 출력해야 합니다. 그 숫자는 MSB에서 LSB로 급격히 증가합니다. 즉, LSB(왼쪽)의 숫자는 오른쪽의 숫자보다 작아야 합니다.
문제를 이해하기 위해 예를 들어 보겠습니다 -
입력 - n =2
출력 -
<이전>01 02 03 04 05 06 07 08 09 12 13 14 15 16 17 18 19 23 24 25 26 27 28 29 34 35 36 6 37 38 39 475 4 /사전>설명 − 보시다시피 왼쪽의 모든 숫자는 오른쪽의 숫자보다 작습니다.
이 문제를 해결하기 위해 MSB(왼쪽)부터 하나씩 숫자로 시작하여 조건에 따라 숫자를 생성합니다. 다음 위치에는 i+1에서 9까지의 숫자가 포함되며, i는 현재 위치의 숫자입니다.
코드 로직을 구현하는 코드 -
예
#includenamespace std;void printIncresingNumbers(int start, string out, int n) { if (n ==0){ cout< 출력
strictly intrictly insigretly insustly insust -012 016 015 016 016 014 016 016 017 014 016 016 017 014 016 016 017 045 016 016 017 018 016 027 028 018 016 027 028 049 016 035 038 049 056 057 058 059 067 068 069 078 079 089 123 124 125 126 138 136 149 167 168 149 167 168 169 178 167 168 169 178 167 168 169 178 167 237 238 248 249 256 257 258 259 267 268 269 278 279 289 345 346 347 349 356 357 358 359 367 368 369 378 379 389 456 457 458 459 7 967 468 469 6 478 479 489 567 568 8 569