C++。字数统计。
如图
运行出错。请问该怎么改呢?环境是不是也要重新配置一下?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[10001]; //上一行行末零的个数记入数组
int i,j;
int n,m,t; //n行,m列,t段
while(scanf("%d%d%d",&n,&m,&t)!=EOF)
{
int count = 0;
int space; //记录有两个空格打头的行之前行的行末空格数
int k = 0; //记录每行行末空格数
int g = 0; //段落编号,第一段除外
memset(a,0,sizeof(a));
int temp; //读取数据,不用数组记录整个文章
//对第一行独立处理,第一行必定为一段的开头
for(i=0;i<m;i++)
{
scanf("%d",&temp);
if(!temp) //0
{
count++;
space++;
}
else
space=0;
}
//第一行的开头必为两个零
count -= 2;
for ( i = 1; i < n; i++)
{
k = 0;
for(j = 0;j < m; j++)
{
//记录每行行末的空格数,所以每次都要清零
scanf("%d",&temp);
if(!temp)
{
count++;
k++;
}
else k = 0;
//读取的是开头两个数组,并且两个数据均为零
if(j == 1&& k == 2 )
//一段的开始,将上一行行末零的个数记入数组
a[g++] = space;
}
//每次仅保存上一行末零的个数
space = k;
}
//整段最后的零的个数必减,并且去掉每段开头的两个零
count = count - (--t)*2-space;
sort(a,a+g);
//利用贪心,减去最多的零的个数
while(t--)count = count - a[--g];
cout<<count<<endl;
}
}