#UVa:12405-Scarecrow

灆洢 2012-07-15 22:02:13

從最左邊開始找目前最左邊的田地,找到後在其與其+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;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料