图 ->四分树

来源:互联网 发布:奇异值分解推荐算法 编辑:程序博客网 时间:2024/05/12 16:02


图论模型 非二叉树,,<四叉树>

_____无聊的慌,随便改的一个四分树代码,< 0 1黑白方块> ,,这得有多无聊,,,尴尬


// 题意:给两棵四分树的先序遍历,求二者合并之后(黑色部分合并)黑色像素的个数。p表示中间结点,f表示黑色(full),e表示白色(empty)// 算法:先建树,然后统计#include<cstdio>#include<cstring>#include<iostream>const int len = 32;const int maxn = 1024 + 10;char s[maxn];int buf[len][len], cnt;// 把字符串s[p..]导出到以(r,c)为左上角,边长为w的缓冲区中// 2 1// 3 4void draw(const char* s, int& p, int r, int c, int w) {  char ch = s[p++];  if(ch == 'p') {    draw(s, p, r,     c+w/2, w/2); // 1    draw(s, p, r,     c    , w/2); // 2    draw(s, p, r+w/2, c    , w/2); // 3    draw(s, p, r+w/2, c+w/2, w/2); // 4  } else if(ch == 'f') { // 画黑像素(白像素不画)    for(int i = r; i < r+w; i++)      for(int j = c; j < c+w; j++)       if(buf[i][j] == 0) { buf[i][j] = 1; cnt++; }  }}int main() {  int T;  int m,n;   int p = 0;  scanf("%d", &T);  //while(T--) {  while(1){        _sleep(5*1000);  system("cls");  memset(s, '\0', sizeof(s));  memset(buf, 0, sizeof(buf));      p = 0;    cnt = 0;  strcpy(s,"ppfefepfefeee");           draw(s, p, 0, 0, len);      p = 0;  strcpy(s,"peepfefepfefe");//  int p = 0;      draw(s, p, 0, 0, len);   for(m=0;m<32;m++){for(n=0;n<32;n++)printf("%d",buf[m][n]);printf("\n");}   _sleep(5*1000);  system("cls");  memset(s, '\0', sizeof(s));  memset(buf, 0, sizeof(buf));      p = 0;  cnt = 0;  strcpy(s,"ppefefpefefee");           draw(s, p, 0, 0, len);p = 0;  strcpy(s,"peepefefpefef");//  int p = 0;      draw(s, p, 0, 0, len);   for(m=0;m<32;m++){for(n=0;n<32;n++)printf("%d",buf[m][n]);printf("\n");}   // }   // printf("There are %d black pixels.\n", cnt); // }  }   return 0;}


0 0
原创粉丝点击