(UVA - 12405) Scarecrow(贪心)
链接: https://vjudge.net/problem/UVA-12405题意:给定正整数n(n<=100),接着输入长度为n的字符串,只由’.’和’#’组成,一个’#’可以覆盖相邻三个’.’,求最少用多少个’#’可以覆盖所有的’.’?
分析:贪心,遇到一个’.’,ans++,跳过后面的两个字符
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e3+5;
char str;
int main()
{
int t,cas=1;
scanf("%d",&t);
while(t--)
{
int n,ans=0;
scanf("%d",&n);
scanf("%s",str);
for(int i=0;i<n;i++)
{
if(str=='.')
ans++,i+=2;
else continue;
}
printf("Case %d: %d\n",cas++,ans);
}
return 0;
}
文档来源:51CTO技术博客https://blog.51cto.com/u_13696685/2989954
页:
[1]