zoukankan      html  css  js  c++  java
  • Little Rooks

    Description

    Inspired by a "Little Bishops" problem, Petya now wants to solve problem for rooks. 

    A rook is a piece used in the game of chess which is played on a board of square grids. A rook can only move horizontally and vertically from its current position and two rooks attack each other if one is on the path of the other. 

    Given two numbers n and k, your job is to determine the number of ways one can put k rooks on an n × n chessboard so that no two of them are in attacking positions. 

    Input

    The input file contains two integers n (1 ≤ n ≤ 10) and k (0 ≤ k ≤ n2). 

    Output

    Print a line containing the total number of ways one can put the given number of rooks on a chessboard of the given size so that no two of them are in attacking positions. 

    Sample Input

    Input
     
    4 4 

    Output
     
    24 
     
    根据规则,每一行只能有一个棋子,采用排列组合的话,
    1.当n > k 时,为0.
    2.当n = k 时,为A(n,k).
    3.当k < n的时候,从n列中拿出k行,剩余n-k+1行。k行则与 n=k 时的排列时一样的,即A(n,k),将剩余的n-k+1行插入k行中,为C(n,k)。所以总的摆放数为:A(n,k)*C(n,k).
     
    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int main()
    {
      int n,k;
      while(cin>>n>>k)
      {
         if(k > n)
           cout<<0<<endl;
        else
        {
           int sum = 1;
            for(int i = k; i>= 1; i--)
                sum *= i;
            int cnk = 1;
            for(int i = n; i>= n-k+1; i--)
            {
                cnk *= i;
            }
            for(int i = k ; i>= 1; i--)
            {
                cnk /= i;
            }
            sum = sum*cnk*cnk;
              cout<<sum<<endl;
        }
      }
       return 0;
    }
  • 相关阅读:
    125-PHP类__set()魔术方法
    124-PHP类析构函数
    123-PHP类构造函数
    122-PHP类成员函数(三)
    121-PHP类成员函数(二)
    120-PHP调用成员方法并将不同类的对象做为参数
    119-PHP调用private成员的方法
    118-PHP调用带参数的成员方法
    117-PHP在外部无法调用private类成员函数
    HDU-2045 不容易系列之(3)—— LELE的RPG难题 找规律&递推
  • 原文地址:https://www.cnblogs.com/T8023Y/p/3234777.html
Copyright © 2011-2022 走看看