欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > > 编程问答 >内容正文

编程问答

[uva]ancientmessages象形文字识别 (dfs求连通块) -凯发k8官方网

发布时间:2025/1/21 编程问答 4 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 [uva]ancientmessages象形文字识别 (dfs求连通块) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

非常有趣的一道题目,大意是给你六种符号的16进制文本,让你转化成二进制并识别出来

 

 

代码实现上参考了//http://blog.csdn.net/u012139398/article/details/39533409

 

#include #include #include #include #include <set>using namespace std;const int maxh = 210; const int maxw = 65; int h,w; int dx[] = {0, 0, -1, 1}; int dy[] = {1, -1, 0, 0}; char* bin[16]= {"0000","0001","0010","0011","0100","0101","0110","0111" ,"1000","1001","1010","1011","1100","1101","1110","1111"}; char code[7] = "wakjsd";char pic1[maxh][maxw]; char pic[maxh][maxw<<2]; int color[maxh][maxw<<2];void dfs(int x,int y,int col) {color[x][y] = col;for(int i = 0; i < 4; i){int nx = x dx[i], ny = y dy[i];if(nx >= 0 && nx < h && ny >= 0 && ny < w&& pic[x][y] == pic[nx][ny] && !color[nx][ny])dfs(nx,ny,col);} } int main() {// freopen("in.txt","r",stdin);// feint cas = 0;while(scanf("%d%d",&h,&w),h){memset(pic,0,sizeof(pic));memset(color,0,sizeof(color));for(int i = 0; i < h; i)scanf("%s",pic1[i]);for(int i = 0 ; i < h; i)for(int j = 0; j < w; j){if(pic1[i][j]<='9'&&'0'<=pic1[i][j])pic1[i][j] -= '0';elsepic1[i][j] -= 'a' - 10;for(int k = 0; k < 4; k){//decodepic[i 1][1 (j<<2) k] = bin[pic1[i][j]][k] - '0';}}h = 2;w = (w<<2) 2;vector<int> cc;int cnt = 0;//cnt = 1一定是白色背景for(int i = 0 ; i < h; i)for(int j = 0; j < w; j){if(!color[i][j]) {dfs(i,j, cnt);if(pic[i][j] == 1) cc.push_back(cnt);//记录黑色所在的连通块 //!!没放到括号里 }}vector< set<int> > neigh(cnt 1);for(int i = 0 ; i < h; i)for(int j = 0; j < w; j) {if(pic[i][j]){for(int k = 0; k < 4; k){int x = i dx[k], y = j dy[k];if(x >= 0 && x < h && y >= 0 && y < w&& pic[x][y] == 0 && color[x][y] != 1)neigh[color[i][j]].insert(color[x][y]); }}}vector<char> ans;for(int i = 0 ; i < cc.size(); i)ans.push_back(code[neigh[cc[i]].size()]);sort(ans.begin(),ans.end());printf("case %d: ", cas);for(int i = 0, sz = ans.size(); i < sz; i)printf("%c",ans[i]);puts("");}return 0; }

 

转载于:https://www.cnblogs.com/jerryrey/p/4596903.html

总结

以上是凯发k8官方网为你收集整理的[uva]ancientmessages象形文字识别 (dfs求连通块)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图