[면접 문제] 검지 Offer-12 - 1부터 N까지 최대 숫자 인쇄
1454 단어 면접 문제고전 면접 문제 모음집
제목 개요
숫자 N을 입력하여 1부터 최대 N비트까지 10진수를 순서대로 인쇄합니다.
예를 들어 3을 입력하면 1-999 사이의 숫자를 인쇄한다
사고방식을 해결하다
직접 작은 함수를 써서 순환으로 가장 큰 N자리를 구하다
그런 다음 인쇄
주의: 입력한 N이 매우 크면 경계를 넘을 가능성이 높습니다!
개량하다
new N+1 문자열 배열
낮음에서 높음으로 순서대로 한 자리의 숫자를 바꾸다
차례차례 모든 위치를 판단하다
N의 숫자로 귀속되면 인쇄
코드 구현 #include
using namespace std;
//
void PrintStrNum(char* str)
{
bool IsBegin = true;
size_t length = strlen(str);
for (size_t i = 0; i < length; ++i)
{
// 0
if (IsBegin && str[i] != '0')
IsBegin = false;
if (IsBegin == false)
printf("%c", str[i]);
}
// Table
printf("\t");
}
//
void _PrintDigits(char* num,const size_t length,const size_t index)
{
// ,
//
if (index == length - 1)
{
PrintStrNum(num);
return;
}
// ,
for (size_t i = 0; i < 10; ++i)
{
num[index + 1] = i + '0';
_PrintDigits(num, length, index + 1);
}
}
//
void PrintDigits(const int length)
{
if (length <= 0)
return;
char* num = new char[length + 1];
num[length] = '\0';
size_t index = 0;
for (size_t i = 0; i < 10; ++i)
{
num[0] = i + '0';
_PrintDigits(num, length, 0);
}
cout << endl;
}
void TestPrintDigits()
{
cout << " :" << endl;
PrintDigits(2);
cout << " :" << endl;
PrintDigits(3);
cout << endl;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 프로그래머 면접에서의 다중 스레드 문제 요약
wait ()/notify ()/notify All () 의 모든 방법을 호출할 때, 현재 라인이 이 대상의 자물쇠를 얻지 못하면, Illegal MonitorState Exception의 이상을 던집니다.
Thre...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
직접 작은 함수를 써서 순환으로 가장 큰 N자리를 구하다
그런 다음 인쇄
주의: 입력한 N이 매우 크면 경계를 넘을 가능성이 높습니다!
개량하다
new N+1 문자열 배열
낮음에서 높음으로 순서대로 한 자리의 숫자를 바꾸다
차례차례 모든 위치를 판단하다
N의 숫자로 귀속되면 인쇄
코드 구현 #include
using namespace std;
//
void PrintStrNum(char* str)
{
bool IsBegin = true;
size_t length = strlen(str);
for (size_t i = 0; i < length; ++i)
{
// 0
if (IsBegin && str[i] != '0')
IsBegin = false;
if (IsBegin == false)
printf("%c", str[i]);
}
// Table
printf("\t");
}
//
void _PrintDigits(char* num,const size_t length,const size_t index)
{
// ,
//
if (index == length - 1)
{
PrintStrNum(num);
return;
}
// ,
for (size_t i = 0; i < 10; ++i)
{
num[index + 1] = i + '0';
_PrintDigits(num, length, index + 1);
}
}
//
void PrintDigits(const int length)
{
if (length <= 0)
return;
char* num = new char[length + 1];
num[length] = '\0';
size_t index = 0;
for (size_t i = 0; i < 10; ++i)
{
num[0] = i + '0';
_PrintDigits(num, length, 0);
}
cout << endl;
}
void TestPrintDigits()
{
cout << " :" << endl;
PrintDigits(2);
cout << " :" << endl;
PrintDigits(3);
cout << endl;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 프로그래머 면접에서의 다중 스레드 문제 요약
wait ()/notify ()/notify All () 의 모든 방법을 호출할 때, 현재 라인이 이 대상의 자물쇠를 얻지 못하면, Illegal MonitorState Exception의 이상을 던집니다.
Thre...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
#include
using namespace std;
//
void PrintStrNum(char* str)
{
bool IsBegin = true;
size_t length = strlen(str);
for (size_t i = 0; i < length; ++i)
{
// 0
if (IsBegin && str[i] != '0')
IsBegin = false;
if (IsBegin == false)
printf("%c", str[i]);
}
// Table
printf("\t");
}
//
void _PrintDigits(char* num,const size_t length,const size_t index)
{
// ,
//
if (index == length - 1)
{
PrintStrNum(num);
return;
}
// ,
for (size_t i = 0; i < 10; ++i)
{
num[index + 1] = i + '0';
_PrintDigits(num, length, index + 1);
}
}
//
void PrintDigits(const int length)
{
if (length <= 0)
return;
char* num = new char[length + 1];
num[length] = '\0';
size_t index = 0;
for (size_t i = 0; i < 10; ++i)
{
num[0] = i + '0';
_PrintDigits(num, length, 0);
}
cout << endl;
}
void TestPrintDigits()
{
cout << " :" << endl;
PrintDigits(2);
cout << " :" << endl;
PrintDigits(3);
cout << endl;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 프로그래머 면접에서의 다중 스레드 문제 요약wait ()/notify ()/notify All () 의 모든 방법을 호출할 때, 현재 라인이 이 대상의 자물쇠를 얻지 못하면, Illegal MonitorState Exception의 이상을 던집니다. Thre...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.