
"새표준 C C99" C99 표준 번역서 인줄 알고 냉큼 샀는데, C 기초 프로그래밍 책이다.
이런,.
/*
a[] : 답중 하나가 되는 부분 집합을 저장할 공간
n : 전체 집합의 크기
k : 현재 집합의 크기
candidates[] : 조건들 (예, 포함되거나 안되거나)
*/
void process_solution(int a, int k)
{
for (int i = 1; i <= k;)
if (a[i] == 1) printf ("...", i);
}
void construct_candidates( ... c, *nc)
{
c[...] = condition
...
*nc = X; // number of conditions
return;
}
backtrack(a[], k, n)
{
if (k == n)
process_solution(a, k);
else
k++;
construct_candidates(c, &nc);
for (int i = 0; i < nc; i++)
a[k] = c[i]; // set condition
backtrack(a, k, n);
}
int main()
{
a = arr[MAXSIZE];
backtrack(a, 0, n);
}
#define MAX(a,b) ((a) > (b) ? (a) : (b))
float arrmax(int n)
{
if (n == 1)
return x[0];
else
{
return MAX(x[n-1], arrmax(n-1));
}
}
k = (a+b) % n; // 요거 대신
k = a + b; if (k>=n) k -=n; // 요렇게
요렇게 해서 for 루프에서 매번하던 비교연산을 줄일 수 있다.
int search(int t) {
hold = x[n];
x[n] = t;
for (i = 0; ;i++) {
if (x[i] == t)
break;
x[n] = hold;
if (i == n)
return -1;
else
return i;
}
while Q is not empty
S = empty
Q = G[V,E]
u = extract_min(Q);
for edge from u
relax(edge, u)