이 과제는 부분적으로 알고리즘 과제, 부분적으로 최적화 과제, 부분적으로 가장 빠른 코드 과제입니다.
AT 행렬은 첫 번째 행 r
과 첫 번째 열로 완전히 지정 됩니다 c
. 행렬의 나머지 각 요소는 대각선으로 위와 왼쪽 인 요소의 복사본 일뿐입니다. 그렇습니다 M[i,j] = M[i-1,j-1]
. 정사각형이 아닌 T 행렬을 허용합니다. 그러나 행 수는 열 수를 넘지 않는다고 항상 가정합니다. 예를 들어, 다음 3 x 5 T 행렬을 고려하십시오.
10111
11011
11101
행렬에 동일한 (벡터) 합계를 가진 동일하지 않은 인덱스가있는 두 개의 비어 있지 않은 열 집합이 포함되어 있으면 행렬에 속성 X가 있다고 가정합니다. 하나 이상의 열의 벡터 합은 단순히 열을 요소별로 요약 한 것입니다. 즉, x
요소를 포함하는 둘 이상의 열의 합계는 각각 x
요소를 포함하는 다른 열입니다 . 한 열의 합은 사소하게 열 자체입니다.
위의 행렬은 첫 번째 열과 마지막 열이 동일하므로 속성 X가 있습니다. 항등 행렬에는 속성 X가 없습니다.
위의 행렬의 마지막 열을 제거하면 속성 X가없고 4/3의 점수를주는 예제가 나타납니다.
1011
1101
1110
작업
이진 항목이 있고 속성 X 가없는 최고 점수의 T 행렬을 찾기위한 코드를 작성하는 작업입니다. 명확성을 위해 이진 항목이있는 행렬에는 각 항목이 0 또는 1이라는 속성이 있습니다.
점수
점수는 숫자 열을 최고 점수 행렬의 행 수로 나눈 값입니다.
타이 브레이커
두 답변의 점수가 같으면 제출 된 답변이 먼저 이깁니다.
(매우) 누군가가 무제한 점수를 얻는 방법을 찾은 경우, 그러한 해결책에 대한 첫 번째 유효한 증거가 인정됩니다. 유한 행렬의 최적성에 대한 증거를 찾을 수있는 경우는 아니지만 당연히 이길 것입니다.
힌트
속성 X 가 없는 최고 점수 찾기 매트릭스의 모든 답변은 여기서 유효하지만 최적은 아닙니다. X 속성이없는 순환 행렬이 아닌 T 행렬이 있습니다.
예를 들어, 속성 X는 없지만 7 x 12 T 행렬은 있지만 그러한 순환 행렬은 없습니다.
21/11은 이것과 이전 도전에서 현재의 모든 답을 이길 것입니다.
언어와 라이브러리
자유롭게 사용할 수있는 컴파일러 / 인터프리터 등이있는 모든 언어를 사용할 수 있습니다. Linux 및 Linux 용으로 무료로 제공되는 모든 라이브러리 용.
보너스 2 점 이상의 점수를 얻은 첫 번째 답변은 즉시 200 포인트 현상금 상을받습니다. Ton Hospel은 이제 이것을 달성했습니다!
현재 리더 보드
- C ++ . Ton Hospel의 점수 31/15
- 자바 . Peter Taylor의 점수 36/19
- 하스켈 . alexander-brett의 점수 14/8