>  기사  >  백엔드 개발  >  N개 주사위의 보이는 면의 최대 합이 X 이상인지 확인하세요.

N개 주사위의 보이는 면의 최대 합이 X 이상인지 확인하세요.

WBOY
WBOY앞으로
2023-09-16 14:13:02705검색

N개 주사위의 보이는 면의 최대 합이 X 이상인지 확인하세요.

프로그래밍의 복잡한 문제를 해결할 때 효율성과 정확성이 중요한 경우가 많습니다. 한 가지 특별한 과제는 N개 주사위의 보이는 면의 최대 합이 X와 같거나 초과하는지 여부를 적절하게 결정하는 것입니다. 이 기사에서는 구문 설명 및 단계별 알고리즘을 포함하여 C++ 코딩의 이러한 어려움을 해결하기 위한 다양한 접근 방식을 평가합니다. 또한 제안된 접근 방식을 기반으로 두 개의 실제적이고 완전한 실행 가능 코드 예제를 제공할 것입니다. 마지막에는 N개 주사위의 보이는 면의 최대 합이 X 이상인지 C++에서 확인하는 방법을 명확하게 이해하게 될 것입니다.

문법

이러한 메서드를 자세히 살펴보기 전에 먼저 다음 코드에서 사용할 메서드의 구문을 이해해 보겠습니다.

으아아아

방법 1

알고리즘

  • 먼저 visibleSum 변수를 0으로 초기화합니다. 이 변수는 보이는 얼굴의 합계를 저장합니다.

  • 주사위 벡터의 각 요소를 반복합니다.

  • 각 주사위마다 면을 내림차순으로 배열하세요.

  • visibleSum에 가장 큰 면(정렬 후 첫 번째 요소)을 추가하세요.

  • 언제든지 visibleSum이 X보다 크거나 같으면 true를 반환합니다.

  • 반복이 완료된 후 X보다 크거나 같은 가시적인 합계가 발견되지 않으면 false를 반환합니다.

으아아아

출력

으아아아

Explanation

의 중국어 번역은

Explanation

입니다.

이 코드에서는 먼저 N(주사위 수), X(최소 합계), dice(주사위 면의 벡터를 나타내는 벡터)의 세 가지 매개 변수를 허용하는 checkVisibleSum 함수를 정의합니다.

checkVisibleSum 함수는 방법 1을 구현합니다. 보이는 면의 합을 저장하는 데 사용되는 visibleSum 변수를 0으로 초기화합니다. 그런 다음 주사위 벡터의 각 주사위를 반복합니다. 각 주사위에 대해 sort(dice[i].rbegin(), dice[i].rend())를 사용하여 면을 내림차순으로 정렬합니다. 이렇게 하면 가장 큰 면이 정렬된 벡터의 시작 부분에 있게 됩니다.

그런 다음 코드는 visibleSum += 주사위[i][0]를 사용하여 현재 주사위의 가장 큰 면을 visibleSum에 추가합니다. 이 기능을 사용하면 특정 상황에서 발생할 수 있는 특정 이벤트를 더 잘 이해할 수 있습니다.

이는 분석 중 다양한 지점에서 주어진 visibleSum이 X를 초과하거나 같은지 여부를 분석하여 확인할 수 있습니다. 연구를 수행하는 동안 이러한 가능성이 발견되면(일반적으로 실제 결과로 표시됨) 관찰 가능한 최대 특징 수가 X를 초과하려는 원래 의도보다 크거나 같다는 어느 정도 확신을 가지고 결론을 내릴 수 있습니다.

반대로, 관련 반복 및 계산을 통해 탐색한 후에도 여전히 해당 통계를 찾을 수 없다면 분명히 답변되지 않은 질문이 더 많다는 의미입니다.

기본 기능에서는 사용자에게 주사위 수(N)를 입력하라는 메시지가 표시됩니다. 각 주사위의 면을 저장하기 위해 주사위라는 벡터 벡터를 만듭니다. 그런 다음 N번 반복하고 각 주사위에 대해 사용자에게 얼굴 수와 얼굴 자체를 묻는 메시지를 표시합니다. 우리는 이 값을 주사위 벡터에 저장합니다.

다음으로 사용자에게 최소 합계(X)를 입력하도록 요청합니다. N, X 및 주사위를 checkVisibleSum 함수에 전달합니다. 따라서 우리는 보이는 다이 페이스의 가능한 최대 합이 X보다 크거나 같다는 메시지를 전달할 것입니다. 그러나 이러한 상황에 대한 긍정적인 전망과는 달리 해당 함수가 실제로 X와 관련하여 바람직하지 않은 결과를 낳는다는 사실을 학습한 결과 지식을 공개할 가능성이 높습니다.

방법 2

알고리즘

  • 먼저 visibleSum 변수를 0으로 초기화합니다. 이 변수는 보이는 얼굴의 합계를 저장합니다.

  • 주사위 벡터의 각 요소를 반복합니다.

  • 각 주사위마다 면을 내림차순으로 배열하세요.

  • 첫 번째 N-1 면(가장 큰 면 제외)의 합을 계산하고 visibleSum에 추가합니다.

  • visibleSum이 X보다 크거나 같으면 true를 반환합니다.

  • 반복이 완료된 후 X보다 크거나 같은 가시적인 합계가 발견되지 않으면 false를 반환합니다.

으아아아

출력

으아아아

Explanation

의 중국어 번역은

Explanation

입니다.

이 코드에는 첫 번째 방법과 동일한 checkVisibleSum 함수가 있습니다. 그러나 주요 차이점은 가시적 합계 계산에 있습니다.

방법 2는 가장 큰 면을 제외하고 각 주사위의 첫 번째 N-1 면을 합산합니다. 이를 달성하기 위해 라이브러리의 누적 함수를 사용합니다. dice[i].begin() 및 dice[i].begin() + N - 1을 누적할 범위로 전달하여 필요한 면에 대해 효과적으로 합산합니다.

main 함수의 나머지 코드는 이전 예제와 동일합니다.

결론

이 기사를 통해 우리의 주제는 C++ 코딩에 관한 중요한 질문을 해결하는 것입니다. 주어진 주사위 세트(N)의 가장 큰 면의 합이 X 이상인지 정확히 어떻게 알 수 있나요? 이 질문에 가장 잘 답하기 위해 우리는 두 가지 실용적인 해결책을 찾았습니다. 첫째, 각 주사위 굴림의 결과 합계가 X와 같거나 초과하는지 확인하고, 두 번째, 첫 번째 N-1 주사위 굴림의 합계만 평가하고, 일치하는지 확인합니다. 또는 X를 초과합니다. 또한 각 방법에 대한 코드 설정과 이러한 절차를 수행하기 위한 자세한 지침을 제공합니다. 또한 이러한 방법을 기반으로 하는 두 가지 실제적이고 완벽하게 실행 가능한 코드 예제를 제공합니다. 이 기사에서 제공된 지식과 코드를 활용하면 이제 C++ 프로그래밍에서 N 주사위의 가장 큰 가시 면의 합이 최소한 X인지 확인하는 문제를 자신 있게 해결할 수 있습니다.

위 내용은 N개 주사위의 보이는 면의 최대 합이 X 이상인지 확인하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제