N.wirth公式:程序=算法+数据结构
可见算法是计算机语言中级其重要的一部份,如穷举法、递推法、二分法、模拟法、搜索、动态规划等。先来看一个代码,今天的考试我写了个特爆力的代码。
#include<bits/stdc++.h>
using namespace std;
int n,m,c[101][101]={0},d[101][101]={0},z=0,l[101][101]={0};
char a[101][101];
int yx[5]={0,0,0,1,-1},yy[5]={0,1,-1,0,0};
int b[10001][4];
void dfs(int x,int y){
z++;
int aa=1,bb=1;
d[x][y]=1;
b[1][1]=x;b[1][2]=y,b[1][3]=1;
while(aa<=bb){
for(int i=1;i<=4;i++){
int tx=b[aa][1]+yx[i],ty=b[aa][2]+yy[i];
if(tx<=n&&ty<=n&&tx>=1&&ty>=1&&a[tx][ty]=='.'&&d[tx][ty]==0){
c[tx][ty]=b[aa][3]+1;
bb++;
b[bb][1]=tx;
b[bb][2]=ty;
b[bb][3]=c[tx][ty];
d[tx][ty]=1;
}
}
aa++;
}
memset(d,0,sizeof(d));
return;
}
int main() {
freopen("flu.in","r",stdin);
freopen("flu.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
cin>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]=='@'){
dfs(i,j);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(c[i][j]>=1&&c[i][j]<=m&&l[i][j]==0){
z++;
l[i][j]=1;}
}
cout<<z;
return 0;
}
有点多φ(゜▽゜*)♪