(0,0)에서 시작하여 양의 x 및 y 축에서 무한대로 진행하는 2 차원 배열이 주어지면. 주어진 숫자 k> 0, (0,0)에서 도달 할 수있는 셀의 수를 찾으십시오. 매 순간마다 x의 합 + y의 합계 < = k입니다. 이동은 위, 아래, 왼쪽 또는 오른쪽 일 수 있습니다. 주어진 x, y> = 0.
Dfs는 응답을 제공하지만 k의 큰 값에는 충분하지 않습니다. 아무도 나를 위해 더 나은 알고리즘을 도울 수 있습니까?주어진 제약 조건을 만족하는 주어진 2 차원 배열에서 셀 개수를 찾는 것
답변
그들은 k> = x + y로 도달 할 수있는 셀 (x, y)의 수를 계산하도록 요청했다고 생각합니다. 예를 들어, x = 1이면 y는 0과 k-1 사이의 임의의 수를 취할 수 있으며 합계는 < = k가됩니다. 가능한 총 횟수는 다음과 같이 계산할 수 있습니다.
sum(sum(1,y=0..k-x),x=0..k) = 1/2*k²+3/2*k+1
큰 k의 트릭을 수행 할 수 있어야합니다.
질문에서 "숫자"로 다소 혼란 스럽습니다. 숫자는 9 999를 만드는 3 번처럼 색인을 구성합니다. 셀 (999,888)의 숫자 합은 51입니다. 숫자의 합이 10^9가되게하려면 10^8 자리가 될 수 있습니다. 10^8 (10^8) 개 항목의 결과로 테이블의 정상 크기를 훨씬 능가하는 색인. 그러므로 나는 나의 첫 번째 해석을 추측하고있다. 그게 정확하지 않다면, 조금 더 설명 할 수 있을까요?
편집는 :
좋아, 그래서 내 대답은 그것을 해결하려고하지 않습니다. 나는 좋은 공식이나 대답을 보지 못한다. 나는 색칠/마킹 문제로 접근하고 모든 유효 셀을 표시 한 다음, 다른 모든 기술을 사용하여 모든 부품이 연결되었는지 확인합니다.
나는 뭔가를 생각해 냈지만 너무 지저분하다. 기본적으로 나는 인덱스와 k를 기반으로 한 번에 큰 파트를 표시하려고 시도했습니다. k = 20 인 경우 셀 범위 (0,0.299)를 한 번에 표시 할 수 있습니다 (더 낮은 인덱스는 더 낮은 인덱스 합계를 갖기 때문에) 나머지 범위를 계속 확인합니다. 마지막 숫자 2를 최대 값으로 고정하고 첫 번째 숫자의 최대 값을 찾음으로써 299부터 시작합니다. 그런 다음 나머지 수백 (300-999)에 대한 프로세스를 계속 진행하고 마지막 숫자 만 수정하여 300..389 및 390..398으로 끝냅니다. 그러나, 당신은 이미 그것이 엉망이라고 볼 수 있습니다 ... (그럼에도 불구하고 나는 당신에게 더 좋은 생각을 줄 수 있습니다)
즉시 볼 수있는 또 하나의 문제는 인덱스에서 대칭 적이라는 것입니다. 유효한 셀 (x, y)은 다른 유효한 셀 (y, x)이 있음을 알려줍니다. 마킹 스키마/dfs/bfs에서 이것은 악용 될 수 있습니다.
질문은 x의 숫자 + y <= k의 숫자 합계에 대한 것입니다. 또한 면접관은 실제 제약 조건을 말하지 않았지만 가능한 한 큰 값으로 커버 할 수있는 최상의 알고리즘을 제공하기를 원했습니다. –
및 이동 방법은 무엇입니까? k = 2라고 가정하면 셀 (10,10)은 유효하지만 이동과 함께 도달 할 수 없습니다. 경로가 있어야합니까? – Origin
네, 그렇게 대답 할 필요는 없습니다. 과거에는이 조건을 만족하는 각 세포가 있어야합니다. –
- 1. 그래프에서 제약 조건을 만족하는 최단 경로를 찾는 방법
- 2. 주어진 숫자, 2 차원 격자를 구성하는 프로그램
- 3. 2 차원 배열에서 인덱스를 찾는 방법
- 4. 구축 그래프 주어진 제약
- 5. 2 차원 배열에서 C++ 왜 우리는 항상 열의 개수를 언급해야합니까?
- 6. 파이썬 2 차원 배열에서
- 7. 2 차원 문자 배열에서 단어 찾기
- 8. ActiveRecord : 제약 조건을 찾는 방법?
- 9. LINQ에서 배열의 주어진 차원 채우기
- 10. 스레드가있는 2 차원 배열에서 최대 수 찾기
- 11. 주어진 술어를 만족하는리스트의 요소 수를 세는 것
- 12. 주어진 배열에서 요소가 반복되는지를 찾는 최적의 방법은 무엇입니까?
- 13. 2 차원 배열에서 1 차원 배열로?
- 14. 2 차원 배열에서 동일한 셀 그룹을 계산하는 방법은 무엇입니까?
- 15. 2 차원 배열에서 비어 있지 않은 격자 셀 찾기
- 16. 2 차원 배열에서 모서리 제거
- 17. 2 포인트에 의해 주어진 3 차원 라인을 따라 움직이는 점
- 18. 2 차원 타일 맵 - 주어진 타일에있는 유닛을 확인하는 방법은 무엇입니까?
- 19. 레일 3에 2 차원 배열의 배열에서 레코드를 찾는 방법은 무엇입니까?
- 20. [Matlab] [Simulink] 2 차원 배열에서 특정 값을 찾는 방법은 무엇입니까?
- 21. 슬라이스 배열 파이썬의 다른 배열에서 주어진 범위
- 22. 주어진 원점과 끝점을 찾는 방법
- 23. 조건으로 주어진 N의 모든 순열을 찾는 알고리즘
- 24. 2 차원 배열의 배열에서 2 차원 배열의 수 얻기
- 25. INFORMATION_SCHEMA를 사용하여 기본 제약 조건을 찾는 방법은 무엇입니까?
- 26. 주어진 입력에 가장 가까운 2^N 값을 찾는 방법은 무엇입니까?
- 27. 1 차원 배열에서 2 개 위치 찾기
- 28. 스프링 통합 : 주어진 조건을 기반으로 흐름을 중지하십시오.
- 29. 주어진 열과 행의 문자 배열에서 색인 찾기?
- 30. 주어진 정수의 2 자리 숫자
"큰"크기는 얼마입니까? – irrelephant
'x의 자리수 + y의 자리수의 합계 '에서'x'와'y'는 정확히 무엇입니까? – NPE
x와 y는 특정 순간의 좌표이며 우리는 항상 (0,0) –