一直ue,玄学,我真的要爆炸了
查看原帖
一直ue,玄学,我真的要爆炸了
1120844
haluyaoac楼主2024/7/24 17:21
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
const int len = 32;
const int maxn = 100000 + 10;
char s[maxn];
int buf[maxn], cnt;
int p = 0;
int shuchu[1000],pl=0;

// 把字符串s[p..]导出到以(r,c)为左上角,边长为w的缓冲区中
// 2 1
// 3 4
void draw(int n,int& p) {
  char ch = s[p++];
  if(ch == 'p') {
      if(buf[n]!=2){ buf[n] = 1; }
      draw(4*n+1,p); // 1
      draw(4*n+2,p); // 2
      draw(4*n+3,p); // 3
      draw(4*n+4,p); // 4
  } 
  else if(ch == 'f') { // 画黑像素(白像素不画)
      buf[n] = 2;
  }
}

void dfs(int i,int g) {
    for (int j = 1; j <= 4; j++) {
        if (buf[4 * i + j] == 0) { continue; }
        else if (buf[4 * i + j] == 2) { cnt += pow(4, 5 - g); }
        else {
            dfs(4 * i + j,g+1);
        }
    }
}

int main() {
  int T;
  scanf_s("%d", &T,1);
  while(T--) {
    memset(buf, 0, sizeof(buf));
    cnt = 0;
    for(int i = 0; i < 2; i++) {
      scanf_s("%s", s,1400);
      p = 0;
      draw(0,p);
    }
    if (buf[0] == 1)dfs(0, 1);
    else if (buf[0] == 0)cnt += 0;
    else cnt += 1024;
    shuchu[pl++] = cnt;
    //printf("%dThere are %d black pixels.\n",pl, cnt);
  }
  for (int i = 0; i < pl; i++) {
      printf("There are %d black pixels.\n", shuchu[i]);
  }
  return 0;
}

udebug全部样例都过了,怎么一直ue啊,快来个高手帮我看看

2024/7/24 17:21
加载中...