HDU 1735 字数统计

来源:互联网 发布:真维斯淘宝店电话 编辑:程序博客网 时间:2024/04/29 14:14

题目地址:点击打开链接

思路:M的值大于20题目说错, b数组开小就会运行错误,开大点,还有就是尽量用scanf(),printf()输入输出,跑出来的时间有点长啊

AC代码:

#include <iostream>#include<algorithm>using namespace std;int a[10010][110],b[25000];bool cmp(int a,int b){    return a > b;}int main(){    int n,l,m,i,j,k,sum,sum1;    while(cin>>n>>l>>m)    {        sum1 = 0;        sum = 0;        k = 0;        for(i=1; i<=n; i++)        {            for(j=1; j<=l; j++)            {                cin>>a[i][j];                if(a[i][j] == 0)                    sum1++;            }        }        for(i=2; i<=n; i++)        {            if(a[i][1] + a[i][2] == 0)            {                sum = 0;                for(j=l; j>=1; j--)                {                    if(a[i-1][j] == 1)                        break;                    else if(a[i-1][j] == 0)                        sum++;                }                b[k++] = sum;            }        }        sort(b,b+k,cmp);        for(i=0; i<m-1; i++)            sum1 -= b[i];//把有可能是文章开头的上一段的最大的m-1个空格减掉        sum = 0;        for(i=l; i>=1; i--)        {            if(a[n][i] == 1)                break;            else if(a[n][i] == 0)                sum++;        }        sum1 -= 2*m;//把m个段落开头的2个空格减掉        sum1 -= sum;//把最后一段的空格减掉        cout<<sum1<<endl;    }    return 0;}



0 0
原创粉丝点击