이 문제에서는 세로로 n개의 선이 있고 가로로 n개의 선이 있고 이 선 사이에 n2개의 교차점이 있도록 배치되는 정수 n이 주어집니다. 우리의 임무는
에서 이 교차점에 4개의 항목을 배치할 수 있는 총 방법 수를 찾는 것입니다.행과 열에 하나 이상의 항목이 포함되지 않도록 합니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
n=4
출력
24
설명
이 문제를 해결하려면 nC4 항목이 있는 n줄에서 4개의 수평선을 선택해야 합니다. 이제 모든 수평선에는 n개의 수직선이 있으므로 첫 번째 선택된 수평선에 항목을 배치하는 n가지 방법이 있습니다. 그런 다음 n-1개의 가능한 배치가 있는 다음 선택된 수평선으로 이동합니다. 그리고 같은 방식으로 세 번째는 n-2에, 앞으로는 n-3에 배치할 수 있습니다. 따라서 총 와트 수는 n 이 됩니다. C4*n*(n-1)*(n-2)*(n-3)
알고리즘의 구현을 보여주는 프로그램,
예
#include <iostream> using namespace std; long long placeItems(int n) { return (1LL * (1LL * ((n) * (n - 1) * (n - 2) * (n - 3)) / (4 * 3 * 2 * 1)) * ((1LL * (n) * (n - 1) * (n - 2) * (n - 3)))); } int main() { int n = 4; cout<<"The number of way is which 4 items can be placed in the intersection of "<<n; cout<<" lines vertically and horizotally are "<<placeItems(n); return 0; }
출력
The number of way is which 4 items can be placed in the intersection of 4 lines vertically and horizotally are 24