zoukankan      html  css  js  c++  java
  • 【DP水题】投票问题(二)

    投票问题(一)

    【试题描述】

        欧阳文和欧阳武竞选学联主席,汪梁森负责唱票,共有m+n张,结果欧阳文获胜,已知欧阳文和欧阳武分别获得 m 张票和 n 张票(m>n)。现在请你计算在唱票过程中欧阳文的票数始终比欧阳武票数多的方案有多少种。

    【输入要求】

    一行,包括两个数,分别为 m 和 n

    【输出要求】

    一个数,表示符合题目要求的方案数。

    【输入实例】

    2 1
    

      

    【输出实例】

    1
    

      

    【其他说明】

    数据范围:1 <= m,n < 100.

    【试题分析】

        比投票问题(一)是不是范围加大了许多??虽然DFS不能过了,但是用DP还是水的不行,我们来直接看代码

    【代码】

    #include<iostream>
    using namespace std;
    inline int read()  
    {  
        int x,f=1;  
        char ch=getchar();  
        for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;  
        for(x=ch-'0';isdigit(ch=getchar());x=x*10+ch-'0');  
        return x*f;
    }
    inline void write(int x){
        if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x;
        int len=0,buf[15];while(x)buf[len++]=x%10,x/=10;
        for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return;
    }
    long long dp[100][100];
    int a,b,m,n;
    int main()
    {
        n=read(),m=read();
        if(m>=n) {cout<<0;return 0;} //不符合条件,其实木有不符合的 QAQ
        dp[1][0]=1;
        for(a=2;a<=n;a++)
            for(b=0;b<a&&b<=m;b++)
            {
                if((b==m||b==a-1)&&a==n)dp[a][b]=dp[a-1][b]+dp[a][b-1]+1;
                else dp[a][b]=dp[a-1][b]+dp[a][b-1];
            }
        write(dp[n][m]-1);
    }
  • 相关阅读:
    OC与JavaScript的交互
    号码运商判断
    iOS 适配https(AFNetworking3.0为例)
    UIlabel的字体自适应属性
    iOS10遇到有推送的Demo真机报错的解决
    UIView的setNeedsDisplay和setNeedsLayout
    ubuntu---设置路径时,profile和bashrc区别
    python---类的定义和使用
    ubuntu---鼠标变成空心十字架
    python--- 遍历一个图片文件夹 并 输出到txt文件
  • 原文地址:https://www.cnblogs.com/wxjor/p/5758376.html
Copyright © 2011-2022 走看看