http://acm.pku.edu.cn/JudgeOnline/problem?id=3363這道題剛開始看懂題時,我是死活不敢動手,就是不相信就是這么做,后來用百度搜了搜這題,在一個博客上看到他對這題的想法,簡單的模擬,我這才開始寫,值得一提的是,這道題幫助我發現了個我不好的習慣,今天因為這個習慣,使兩道題都tl,我總是在沒讀完數據,輸出結果后,就經過一個fflush來刷干凈緩沖,但是把結束條件也刷掉了,使程序斷不了,導致tl。(這都多些partychen :-))
1
#include<iostream>
2
using namespace std;
3
#define Max 100
4
int main()
5
{
6
int n,m,r,c,cont;
7
int i,j,p,q,t;
8
int map[Max][Max];
9
char row[Max];
10
while(scanf("%d%d%d%d",&n,&m,&r,&c)){
11
getchar();
12
memset(map,0,sizeof(map));
13
if(!n&&!m&&!r&&!c)break;
14
cont=0;
15
t=0;
16
for(i=0;i<n;i++){
17
gets(row);
18
for(j=0;j<m;j++){
19
if(map[i][j]!=row[j]-'0')
20
if(i+r<=n&&j+c<=m){
21
for(q=i;q<i+r;q++)
22
for(p=j;p<j+c;p++){
23
map[q][p]+=1;
24
map[q][p]%=2;}
25
cont++;}
26
else {t=1;break;}
27
}
28
if(t==1)break;
29
}
30
if(t==1){
31
while((++i)<n)gets(row);
32
printf("-1\n");}
33
else printf("%d\n",cont);
34
}
35
return 0;
36
}
posted on 2008-02-27 21:58
zoyi 閱讀(318)
評論(0) 編輯 收藏 引用 所屬分類:
acm