프로 그래 밍 의 아름다움 3.2 전화번호 대응 영어 단어
예 를 들 어 4, 2 키 를 입력 하면 GA, GB, GC, HA, HB, HC, IA, IB, IC 조합 을 드 립 니 다.
물론 대부분의 사람들 에 게 는 몇 층 의 순환 으로 해결 되 고 층 마다 옮 겨 다 니 며 내부 수출 이다.하지만 우 리 는 당연히 더 높 은 알고리즘 을 추구 해 야 한다.일반적인 방법 으로 하면 숫자 를 하나 더 누 를 때마다 for 순환 을 추가 하 는 것 이 분명 하지 않 습 니 다.다음은 당신 을 탄복 하 게 하 는 방법 을 알려 드 리 겠 습 니 다.
#include<iostream>
using namespace std;
const int MaxLength = 9;
char c[10][10] = {"", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"};
int total[10] = {0,0,3,3,3,3,3,4,3,4};
int main()
{
int number[MaxLength] = {2,3,4}; // 2,3,4
int answer[MaxLength] = {0};
int len = 3;
while(true){
for(int i = 0; i < len; i++)
printf("%c", c[number[i]][answer[i]]);
printf("
");
int k = len - 1;
while(k >= 0){
if(answer[k] < total[number[k]] - 1){
answer[k]++;
break;
}
else{
answer[k] = 0;
k--;
}
}
if(k < 0)
break;
}
return 0;
}
뜻밖에도 두 층 의 순환 만 이 해결 되 었 다. 한참 동안 읽 었 지만 이해 하지 못 했다. 그러나 읽 은 후에 사람 을 매우 탄복 하 게 만 들 었 다. 원래 이렇게 쓸 수 있 었 구나!프로그램의 가 독성 이 강하 지 않 지만 우리 가 코드 를 읽 는 수준 이 높 지 않다 는 것 을 의미한다. 쇠스랑 의 알고리즘 은 모두 간단 하고 효율 적 이 며 가 독성 이 강하 지 않다 고 하지 않 느 냐.감탄 한 나머지 이 알고리즘 을 관찰 하 는 것 도 배열 조합의 생 성 에 매우 적합 합 니까?대단 하 네.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다. ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.