분치법과 귀속
사상과 전략을 설계하다
원문제를 이미 해결된 부분과 미해결된 부분으로 분해할 수 있다. 이 두 부분의 길이는 모두 0이 될 수 있다. 이미 해결된 부분에 대해 우리는 탐구하지 않고 미해결된 부분에 대해 우리는 몇 개의 최소자 문제의 집합으로 분해할 수 있다. 모든 최소자 문제에 대해 우리는 간단하게 해답을 구할 수 있다.
분치법의 적용 조건
단계 및 설계 모드
디자인 모델
Divide-and-Conquer(P)
1. if |P|≤n0
2. then return(ADHOC(P))
3. P P1 ,P2 ,...,Pk
4. for i←1 to k
5. do yi ← Divide-and-Conquer(Pi) △ Pi
6. T ← MERGE(y1,y2,...,yk) △
7. return(T)
사유 과정
실제로는 수학 귀납법과 유사하여 본 문제를 해결하는 구해 방정식 공식을 찾은 다음에 방정식 공식에 따라 귀속 프로그램을 설계한다.
관례
Write function void stringSplit (char *str, int n, int *length, ...); which is able to split the string str into an undefined number of sub-strings whose sizes are stored in length[0], length[1], . . ., length[n-1]. Write an error message when it is not possible to split the string into sub-strings of those lengths. Print-out the generated sub-strings when it is possible. For example, with: • str = Hello, n = 2, and length = (2, 3), the program may produce sub-strings (He, llo), or (Hel, lo). • str = Hello, n = 2, and length = (3, 4), there is no decomposition. • str = sampleTest, n = 3, and length = (2, 3, 6), the program may produce sub-strings (sa, mp, le, Te, st), or sub-strings (sa, mp, leT, est), or sub-strings (sa, mpleTe, st), etc.
#include
#include
#include
#define MAX 1024;
void stringSplit (
char *str,
int n,
int *length
)
{
char *s;
int i;
s = (char *) malloc ((strlen (str) + 1) * sizeof (char));
if (s==NULL) {
fprintf (stderr, "Allocation Error.
");
exit (1);
}
for (i=0; istrlen (str)) {
return (0);
}
// Termination with a solution
if (len==strlen (str)) {
for (i=k=0; i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.