USACO 2.1 Hamming Codes(반복)
#include <stdio.h>
#define DEBUG 1
#define TESTCASES 9
int codewords, numOfBits, hammingDist;
int max;
int result[257];
int countBit1(int num){
int numOfBit1 = 0;
while (num){
num &= (num - 1);
numOfBit1++;
}
return numOfBit1;
}
int findCodeword(int count){
if (count == codewords){
int i;
for (i = 0; i < count; i++)
printf("%d%c", result[i], i % 10 == 9 ? '
' : ' ');
printf("
");
return 1;
}
int num;
for (num = result[count - 1] + 1; num < max; num++){
int ok = 1;
int i;
for (i = 0; i < count; i++){
if (countBit1(num ^ result[i]) < hammingDist){
ok = 0;
break;
}
}
if (ok){
result[count] = num;
if (findCodeword(count + 1))
return 1;
}
}
}
int main(){
#if DEBUG
int testCase;
for (testCase = 1; testCase <= TESTCASES; testCase++){
char inputFileName[20] = "inputX.txt";
inputFileName[5] = '1' + (testCase - 1);
freopen(inputFileName, "r", stdin);
printf("
#%d
", testCase);
#endif
scanf("%d%d%d", &codewords, &numOfBits, &hammingDist);
max = 1 << numOfBits;
findCodeword(1);
#if DEBUG
}
#endif
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[USACO] 2021 December - BronzeN\le500,000 O(N \log N) O(N^2) O(N2)이라 포기. O(N) O(N) 풀이다. O(N^2) O(N2) 아닌가? O(N) O(N). O(NT) N \le 100,000 O(NT) O(N) O(...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.