열거가 - 문제에 대한 목록 모든 가능한 솔루션, 하나 하나 - -, a는 제기 된 문제를 기반으로 나열된 프로세스를 모든 가능한 솔루션을 테스트 할 경우 문제에 대한 진정한 해결책
은이 솔루션을 채택하는 경우, 그렇지 않은 경우, 다음의 경우에 계속.
열거의 방법은 - - - 직관적처럼 이해하기 쉽게,하지만 모든 가능한 솔루션을 조사하기 때문에 운영 효율성을 낮출 .
예 : 겨울 작업
이 블로그에 해결, 두 가지 방법이 있습니다 :
https://www.cnblogs.com/expedition/p/12243498.html
예 : 방정식의 해법
샘플 입력
1,000
샘플 출력
6 8 30
10 18 24
#INCLUDE <STDIO.H> INT ) (주 { INT N; scanf와 ( " %의 D ' , N); 위한 ( int로 A = 1 ; A *은 <= n은 ++ ) { 대 ( INT B = A + 1 , A * A + B * B <= N, B ++ ) { 대 ( INT C = B + 1 ]을 * A + B * B + C * C <= N, C ++ ) { 경우 (A * A + B * B + C * C == N) { 의 printf ( " % D % D % D \ n " , A, B, 씨); } } } } 반환 0 ; }
예 : 대부분의 하위 배열을 할 수
이전 블로그는 해결
https://www.cnblogs.com/expedition/p/12330848.html
예 : 네 개의 광장과
#include<stdio.h> #include<math.h> int get(int n){ for(int a= 0; a*a <= n;a++){ for(int b = a; a*a + b*b <= n;b++){ for(int c = b; a*a + b*b + c*c <= n;c++){ int d = sqrt( n - a*a - b*b - c*c); if(a*a + b*b + c*c +d*d == n){ printf("%d %d %d %d",a,b,c,d); return 0; } } } } } int main(){ int n; scanf("%d",&n); get(n); return 0; }
例题:装饰效果
#include<stdio.h> int a[105]; int main(){ int n; scanf("%d",&n); for(int i = 0; i< n;i++){ scanf("%d",&a[i]); } int ans = 0; int sum; for(int i = 0;i < n;i++){ sum = 0; for(int j = i; j< n;j++){ sum += a[j]; if(sum > ans) ans = sum; } } printf("%d",ans); return 0; }
例题:双截棍
#include<stdio.h> int a[105]; int main(){ int n; scanf("%d",&n); for(int i = 0; i< n;i++){ scanf("%d",&a[i]); } int ans = 10000; for(int i = 0; i < n;i++){ for(int j = i+ 1;j < n;j++){ if(a[j] >= a[i]){ if(a[j] - a[i] < ans){ ans = a[j] - a[i]; } }else{ if(a[i] - a[j] < ans){ ans = a[i] - a[j]; } } } } printf("%d",ans); return 0; }