從最左邊開始找目前最左邊的田地,找到後在其與其+1和其+2三個地區放上一個稻草人來保護,再繼續往下找下一塊田地,直到又遇到田地,就再把其與其+1和其+2三個地區放上一個稻草人來保護,以此類推,即可得知最小需放置之稻草人之數量。
C++(0.012)
/*******************************************************/
/* UVa 12405 - Scarecrow */
/* Author: Maplewing [at] knightzone.studio */
/* Version: 2012/07/15 */
/*******************************************************/
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int T;
int N;
int scarecrow;
string field;
while( scanf( "%d", &T ) != EOF ){
for( int i = 1 ; i <= T ; i++ ){
scanf( "%d", &N );
getchar();
getline( cin, field );
scarecrow = 0;
for( int j = 0 ; j < field.length() ; j++ ){
if( field[j] == '.' ){
scarecrow++;
if( j+1 < field.length() ) field[j+1] = '#';
if( j+2 < field.length() ) field[j+2] = '#';
}
}
printf( "Case %d: %d\n", i, scarecrow );
}
}
return 0;
}