在 C++ 中,如何将项目放置在 n^2 个位置,使得每行每列最多只有一个项目
在这个问题中,我们给定一个整数 n,表示垂直方向和水平方向各有 n 条线,这些线相交形成 n2 个交点。我们的任务是找到将 4 个项目放置在这些交点上的总方法数,
并且要求每行每列最多只能放置一个项目。
让我们举个例子来理解这个问题,
输入
n=4
输出
24
解释
为了解决这个问题,我们需要从 n 条水平线中选择 4 条来放置项目,这可以通过 nC4 来计算。现在,每条水平线都有 n 条垂直线,因此在第一条选择的水平线上放置项目有 n 种方法。然后,我们移动到下一条选择的水平线,那里将有 n-1 种可能的放置方式。以此类推,第三个可以在 n-2 种方式中放置,第四个可以在 n-3 种方式中放置。因此,总方法数将是 nC4*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
广告