http://codeforces.com/problemset/problem/377/A
http://blog.csdn.net/keshuai19940722/article/details/18864491
答案不唯一,从后往前找.没看清题意==.看了上面的代码.
#include<bits/stdc++.h>
using namespace std;
const int MAX=502;
int n,m,k;
char x[MAX][MAX];
int v[MAX][MAX];
const int a[4]={1,-1,0,0};
const int b[4]={0,0,1,-1};
void dfs(int r,int c){
v[r][c]=1;
for(int i=0;i<4;i++){
int r1=r+a[i];
int c1=c+b[i];
if(r1<1||r1>n||c1<1||c1>m)
continue;
if(x[r1][c1]=='.'&&!v[r1][c1])
dfs(r1,c1);
}
if(k){
k--;
v[r][c]=2;
}
}
int main(){
cin>>n>>m>>k;
memset(v,0,sizeof(v));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>x[i][j];
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(!v[i][j]&&x[i][j]=='.')
dfs(i,j);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(v[i][j]==2)
cout<<"X";
else
cout<<x[i][j];
}
cout<<endl;
}
return 0;
}