zoukankan      html  css  js  c++  java
  • hdu2125(数学)

    题意:N×M的网格其中有一条边坏掉了,问从起点到终点的放法数。

    分析:数学公式

    如果没有坏边的话,总放法数是CN-1(M+N-2) 

    因为每种方法都要走(M+N-2)步,向上走M-1步,向右走N-1步

    现在考虑一条坏边,那么就计算经过这条坏边的方案数然后从总数里面减去经过坏边的方案数即可

    经过坏边的方案数就是从起点到(x1, y1)的方案数×从(x2, y2)到终点的方案数

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cmath>
     4 #include <iostream>
     5 #include <algorithm>
     6 #include <queue>
     7 #include <cstdlib>
     8 #include <vector>
     9 #include <set>
    10 #include <map>
    11 #define LL long long
    12 #define mod 1000000007
    13 #define inf 0x3f3f3f3f
    14 #define N 10010
    15 using namespace std;
    16 LL c[50][50];
    17 void init()
    18 {
    19     for(int i=0;i<=40;i++)c[i][0]=c[i][i]=1;
    20     for(int i=1;i<=40;i++)
    21         for(int j=1;j<i;j++)c[i][j]=c[i-1][j]+c[i-1][j-1];
    22 }
    23 int main()
    24 {
    25     int n,m,x1,y1,x2,y2;
    26     init();
    27     while(scanf("%d%d",&n,&m)>0)
    28     {
    29         scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    30         if(x1+y1>x2+y2)
    31         {
    32             swap(x1,x2);
    33             swap(y1,y2);
    34         }
    35         printf("%I64d
    ",c[n+m-2][m-1]-c[x1+y1][x1]*c[m+n-2-x2-y2][m-1-x2]);
    36     }
    37 }
    View Code
  • 相关阅读:
    模块jieba库的使用
    模块wordcloud库的使用
    爬取哔哩哔哩网站弹幕
    爬虫讲解
    基本统计值计算
    数据类型及元素元组
    pyinstall的安装及使用
    面向对象介绍
    re模块
    logging模块
  • 原文地址:https://www.cnblogs.com/ljy08163268/p/11706096.html
Copyright © 2011-2022 走看看