[취미 알고리즘] 네 개의 정수 abcd 를 정의 합 니 다. 0000 에서 9999 범위 내 에서 다음 과 같은 규칙 에 부합 되 는 네 개의 정 수 를 출력 합 니 다.
12935 단어 ●【데이터 구조 와 알고리즘】
제목 설명
네 개의 정수
abcd
를 정의 하고 0000
에서 9999
범위 내 에서 다음 과 같은 규칙 에 부합 되 는 네 개의 정 수 를 출력 합 니 다.예시:
정 답: 0389, 1289 반 례: 2398, 6789
2. 문제 분석
O(n^4)
a、b、c、d
의 실제 수치 범 위 를 요약 하고 순환 횟수 를 줄인다.조건 에 따라 a
의 수 치 는 다음 과 같이 요약 할 수 있다. a + (a+1) + (a+2) + (a+3) <= 20
결과: 0<=a<=3.5
;같은 이치: b
의 수치: a+1<=b<=(20-3-a)/3
;c
의 수치: b+1<=c<=(20-1-a-b)/2
;d
직접 계산 하면 얻 을 수 있다.3. 코드 구현
/*
[abcd], :
1. a
package main
import "fmt"
func main() {
fmt.Println("-----------------[ ]------------------")
f0()
fmt.Println("-----------------[ ]------------------")
f1()
fmt.Println("-----------------[ ]------------------")
f2()
}
//
func f0() {
for a := 0; a <= 9; a++ {
for b := 0; b <= 9; b++ {
for c := 0; c <= 9; c++ {
for d := 0; d <= 9; d++ {
if a+b+c+d == 20 && a < b && b < c && c < d {
fmt.Printf("%04d
", a*1000+b*100+c*10+d)
}
}
}
}
}
}
//
func f1() {
for a := 0; a <= (20-6)/4; a++ {
for b := a + 1; b <= (20-3-a)/3; b++ {
for c := b + 1; c <= (20-1-a-b)/2; c++ {
d := 20 - a - b - c
if d <= 9 {
fmt.Printf("%04d
", a*1000+b*100+c*10+d)
}
}
}
}
}
//
func f2() {
// TODO
}
실행 결과:
-----------------[ ]------------------
0389
0479
0569
0578
1289
1379
1469
1478
1568
2369
2378
2459
2468
2567
3458
3467
-----------------[ ]------------------
0389
0479
0569
0578
1289
1379
1469
1478
1568
2369
2378
2459
2468
2567
3458
3467
-----------------[ ]------------------
——2019-07-26——
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Nginx] ubuntu 16.04 환경 Nginx 의 컴 파일, 설치, 자체 시작 설정 과 서비스 설정– pid - path = path 는 메 인 프로 세 스 id 를 저장 하 는 파일 이름 을 설정 합 니 다. – http - log - path = path 는 HTTP 서버 의 주 요청 로그 파일 의 이름 을 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.