URAL--1008. Image Encoding
来源:互联网 发布:安装禅道pathinfo.php 编辑:程序博客网 时间:2024/05/21 03:26
其实这一题就是模拟,再者就是考察了输入的一些小技巧,就没有了......
题意:前面的题意我想应该很好理解,重点是第二种编码的理解。
第二种编码方法:首行指定左下角的黑色象素的坐标。以下每行为与它相邻的象素的描述。先是左下角的象素,然后是与它相邻的第一个象素A(如果存在的话),再是与它相邻的第二个象素B(如果存在的话)。当所有相邻的象素都描述完了,接下来就是与A相邻的象素的描述,再是与B相邻的象素的描述,如此类推。
只用一个字母表示相邻,R:在右,T:在上, L:在左,B:在下。一行为一个象素的相邻描述。同一象素不出现2次,如果之前已经描述过,就不用重复描述了。是从右开始,按逆时针方向描述的。每一行的描述以","结束,最后一行的","则改为"."表示文件结束。
#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>#include<algorithm>#define N 100using namespace std;struct point{ int x,y; bool operator < ( const point &a )const//重载运算符,为sort排序做准备 { if ( x == a.x ) return y < a.y ; return x < a.x ; }};int mov[4][2]={1,0,0,1,-1,0,0,-1};int map[N][N];point que[N*N];char condition[100][10],dir[5]="RTLB";//dir与MOV建立对应关系void bfs1(int y,int x){ int fre=0,aft=1; que[0].x=x; que[0].y=y; map[y][x]=0; point cur,next; while (fre<aft) { cur=que[fre++]; for (int i=0;i<4;i++) { int tx,ty; tx=cur.x+mov[i][0]; ty=cur.y+mov[i][1]; next.x=tx; next.y=ty; if (tx>=0&&tx<100&&ty>=0&&ty<100&&map[ty][tx]==1) { que[aft++]=next; map[ty][tx]=0; printf("%c",dir[i]); } } if (fre!=aft)printf(",\n"); else printf(".\n"); }}void bfs2(int x,int y,int count){ int aft=1,i=0; que[0].x=x; que[0].y=y; while (++i<count) { int len=strlen(condition[i]); for (int j=0;j<len;j++) for (int k=0;k<4;k++) { if (condition[i][j]==dir[k]) { que[aft].x=que[i-1].x+mov[k][0]; que[aft++].y=que[i-1].y+mov[k][1]; break; } } }}int main(){ int x,y,n,count=0; while (gets(condition[count])!=NULL&&condition[count][0]!='\0') { ++count; } memset(map,0,sizeof(map)); if (condition[1][0]>'0'&&condition[1][0]<='9') { sscanf(condition[0],"%d",&n); for (int i=count-1;i>=1;i--) { sscanf(condition[i],"%d%d",&x,&y); map[y-1][x-1]=1; } printf("%d %d\n",x,y); bfs1(y-1,x-1); } else { sscanf(condition[0],"%d%d",&x,&y); bfs2(x,y,count); printf("%d\n",count-1); sort( que , que + count - 1 ) ; for (int i=0;i<count-1;i++) printf("%d %d\n",que[i].x,que[i].y); } return 0;}
0 0
- ural 1008. Image Encoding
- URAL--1008. Image Encoding
- ural 1008. Image Encoding bfs
- ural 1008 Image Encoding
- ural 1008 Image Encoding
- ural 1008 Image Encoding
- URAL 1008 Image encoding [BFS]
- ural 1008 Image Encoding bfs
- URAL 1008 Image Encoding (BFS)
- URAL 1008 - Image Encoding(bfs坑爹题)
- 1008. Image Encoding(BFS)
- HDR Image encoding formats
- URAL1008 - Image Encoding - 广度优先搜索
- Encoding
- Encoding
- encoding
- Encoding
- Encoding
- servlet中配置文件web.xml中的参数context-param和init-param区别
- HDU OJ 4185 Oil Skimming【二分图之黑白染色】
- SSRS:ASP.NET中引用报表远程认证之ReportServerCredentials属性的设置
- 反编译时有些类文件不在代码中
- POJ训练计划2528_Mayor's posters(线段树/成段更新+离散化)
- URAL--1008. Image Encoding
- POJ 2299 Ultra-QuickSort(线段树+离散化)
- 设计模式六大原则(3):依赖倒置原则
- Effective Objective-C(第47-52条)系统架构,foundation、for-in、NSTimer
- hdu4845 状态压缩BFS
- 30天自制操作系统之第13天 定时器(2)
- Android Service在测试工程中使用的注意事项
- 要想快,先慢下来
- 使用aireplay-ng时报错“mon0 is on channel ×, but the AP uses channel ×”