HDU1241多种解
来源:互联网 发布:万国数据是外企吗 编辑:程序博客网 时间:2024/06/04 00:23
#include<stdio.h>#include<string.h>int m,n,a[2][10000];char grid[100][100];void bfs(int i,int j){ int k=0,t=0; memset(a,-1,sizeof(a)); a[0][k]=i; a[1][k]=j; while(a[0][t]!=-1) { i=a[0][t]; j=a[1][t]; for(int c=-1;c<=1;c++) { for(int b=-1;b<=1;b++) { if(grid[i+c][j+b]=='@'&&i+c>=0&&i+c<n&&j+b>=0&&j+b<m) { k++; a[0][k]=i+c; a[1][k]=j+b; grid[i+c][j+b]='*'; } } } t++; }}int main(){ int i,j,cnt; while(scanf("%d%d",&n,&m)!=EOF&&(n!=0||m!=0)) { for(i=0;i<n;i++) { scanf("%s",grid[i]); } for(cnt=i=0;i<n;i++) { for(j=0;j<m;j++) { if(grid[i][j]=='@') { grid[i][j]='*'; bfs(i,j); cnt++; } } } printf("%d\n",cnt); }}#include<cstdio>#include<iostream>using namespace std;#include<queue>char grid[100][100];int m,n;struct ground{ int a,b;}t;void bfs(int i,int j){ queue<ground> q; t.a=i;t.b=j; q.push(t); grid[i][j]='*'; while(!q.empty()) { t=q.front(); q.pop(); i=t.a;j=t.b; int ii,jj; for(int a=-1;a<=1;a++) { for(int b=-1;b<=1;b++) { ii=i;jj=j; if(grid[ii+a][jj+b]=='@'&&ii+a>=0&&ii+a<n&&jj+b>=0&&jj+b<m) { t.a=ii+a;t.b=jj+b; q.push(t); grid[ii+a][jj+b]='*'; } } } }}int main(){ int i,j,cnt; while(scanf("%d%d",&n,&m)!=EOF&&(n!=0||m!=0)) { for(i=0;i<n;i++) { scanf("%s",grid[i]); } for(cnt=i=0;i<n;i++) { for(j=0;j<m;j++) { if(grid[i][j]=='@') { bfs(i,j); grid[i][j]='*'; cnt++; } } } printf("%d\n",cnt); }}#include<stdio.h>#include<string.h>char grid[100][100];int m,n,idx[100][100];void dfs(int i,int j,int id){ if(i<0||i>=m||j<0||j>=n) return; if(grid[i][j]!='@'||idx[i][j]!=0) return; idx[i][j]=id; for(int dr=-1;dr<=1;dr++) { for(int ds=-1;ds<=1;ds++) { if(dr!=0||ds!=0) dfs(i+dr,j+ds,id); } }}int main(){ int i,j,cnt; while(scanf("%d%d",&m,&n)&&m!=0) { for(i=0;i<m;i++) { scanf("%s",grid[i]); } memset(idx,0,sizeof(idx)); for(cnt=i=0;i<m;i++) { for(j=0;j<n;j++) { if(grid[i][j]=='@'&&idx[i][j]==0) dfs(i,j,++cnt); } } printf("%d\n",cnt); } return 0;}#include<stdio.h>char grid[100][100];int n,m;void dfs(int i,int j){ grid[i][j]='*'; for(;;) { if(i+1<m) { if(grid[i+1][j]=='@') { dfs(i+1,j); } if(j+1<n&&grid[i+1][j+1]=='@') { dfs(i+1,j+1); } if(j-1>=0&&grid[i+1][j-1]=='@') { dfs(i+1,j-1); } } if(j-1>=0&&grid[i][j-1]=='@') dfs(i,j-1); if(j+1<n&&grid[i][j+1]=='@') dfs(i,j+1); if(i-1>=0) { if(grid[i-1][j]=='@') { dfs(i-1,j); } if(j+1<n&&grid[i-1][j+1]=='@') { dfs(i-1,j+1); } if(j-1>=0&&grid[i-1][j-1]=='@') { dfs(i-1,j-1); } } break; }}int main(){ int i,j,t; while(scanf("%d%d",&m,&n)!=EOF&&m!=0) { for(i=0;i<m;i++) { scanf("%s",grid[i]); } for(t=i=0;i<m;i++) { for(j=0;j<n;j++) { if(grid[i][j]=='@') { dfs(i,j); t++; } } } printf("%d\n",t); }}#include<stdio.h>#include<string.h>int m,n,a[2][10000];char grid[101][100];void bfs(int i,int j){ int k=0,t=0; memset(a,0,sizeof(a)); a[0][k]=i; a[1][k]=j; while(a[0][t]!=0) { i=a[0][t]; j=a[1][t]; for(int c=-1;c<=1;c++) { for(int b=-1;b<=1;b++) { if(grid[i+c][j+b]=='@'&&i+c>=1&&i+c<=n&&j+b>=0&&j+b<m) { k++; a[0][k]=i+c; a[1][k]=j+b; grid[i+c][j+b]='*'; } } } t++; }}int main(){ int i,j,cnt; while(scanf("%d%d",&n,&m)!=EOF&&(n!=0||m!=0)) { for(i=1;i<=n;i++) { scanf("%s",grid[i]); } for(cnt=0,i=1;i<=n;i++) { for(j=0;j<m;j++) { if(grid[i][j]=='@') { grid[i][j]='*'; bfs(i,j); cnt++; } } } printf("%d\n",cnt); }}#include<stdio.h> int m,n,t = 0,ft[105][105],dp[105][105],q[101*101*20][2];char a[105][105];int dir[4][2]= {{0,-1},{0,1},{1,0},{-1,0}};void bfs(){int x,y,xx,yy,parent,front = 0,rear = 1,tt,i;q[0][0] = q[0][1] = 0; dp[0][0] = 0;while(front != rear){x = q[front][0]; y = q[front][1];parent = front; front++;for(i = 0; i < 4; i++){xx = x + dir[i][0]; yy = y + dir[i][1];if(xx < 0 || xx >= n || yy < 0 || yy >= m) continue;if(a[xx][yy] == 'X') continue;tt = dp[x][y] + 1;if(a[xx][yy] != '.') tt += a[xx][yy] - '0';if(dp[xx][yy] != -1 && dp[xx][yy] <= tt) continue;//此处需注意,一旦 <= 变成 < 就会爆时间dp[xx][yy] = tt;ft[xx][yy] = parent;q[rear][0] = xx; q[rear][1] = yy;rear++;}}}void show(int x,int y){int i,_=ft[x][y];if(ft[x][y] == -1) return;show(q[_][0],q[_][1]);t++;printf("%ds:(%d,%d)->(%d,%d)\n",t,q[_][0],q[_][1],x,y);if(a[x][y] != '.'){for(i = 0; i < a[x][y] - '0'; i++){printf("%ds:FIGHT AT (%d,%d)\n",++t,x,y);}}}int main(){int i,j;while(~scanf("%d%d",&n,&m)){t = 0;getchar();memset(ft,-1,sizeof(ft));memset(dp,-1,sizeof(dp));for(i = 0; i < n; i++){gets(a[i]);}bfs();if(dp[n - 1][m - 1] == -1) printf("God please help our poor hero.\nFINISH\n");else{printf("It takes %d seconds to reach the target position, let me show you the way.\n",dp[n - 1][m - 1]);show(n - 1, m - 1);printf("FINISH\n");}}return 0;}
0 0
- HDU1241多种解
- HDU1241
- hdu1241
- hdu1241
- HDU1241
- hdu1241
- hdu1241
- hdu1241
- hdu1241
- hdu1241
- hdu1241
- hdu1241
- hdu1241
- HDU1241
- hdu1241
- hdu1241
- hdu1241
- hdu1241
- 如何制作宽屏页面之html简单方法
- 利用getViewTreeObserver().addOnGlobalLayoutListener()获得一个视图的高度
- Java动态编译
- org.objectweb.asm.ClassVisitor.visit(转载)
- 引用Android网络管理博客链接。
- HDU1241多种解
- base64Bytes = [base64Data bytes]; const unsigned char *bytes = [self bytes]; 支付宝错误
- dubbo使用详解
- error LNK2001: 无法解析的外部符号 解决办法
- 被误解的MVC和被神化的MVVM
- hadoop配置文件加载机制
- error while loading shared libraries的解決方法
- JNI学习笔记
- 机器学习是如何运作的?谷歌来告诉你