谦虚的小美 2023-03-02 19:23 采纳率: 0%
浏览 21

关于#c++#的问题:编译错误

题目在这个网址2083 -- Fractal (poj.org)
是poj上的2083号题
在自己电脑上的vs编译通过且正确,但是放在poj上提交时就显示编译错误

#include <iostream>
#include <cstdio>

using namespace std;

int fx[10010][10010] = { 0 };

//分形。图形放在fx[a][a],即前a行前a列
void fen(int j, int a) {    //i为第几次分形,a为需要分形的总次数
    int n = pow(3, j - 2);    //n为本次分形被分形的分形行列数
    int m = (pow(3, a - 1) + 1) / 2;    //m为最中间的下标
    if (j == 1) {    //第一次分形时在正中间放1
        fx[m][m] = 1;
    }
    else {
        int h = m - n / 2;
        for (int o = 0; o < n; o++) {    //行移动数
            for (int p = 0; p < n; p++) {    //列移动数
                fx[m + o - n - n / 2][m + p - n - n / 2] = fx[h + o][h + p];    //左上角分形填充
                fx[m + o - n - n / 2][m + p + n / 2 + 1] = fx[h + o][h + p];    //右上角分形填充
                fx[m + o + n / 2 + 1][m + p - n - n / 2] = fx[h + o][h + p];    //左下角分形填充
                fx[m + o + n / 2 + 1][m + p + n / 2 + 1] = fx[h + o][h + p];    //右下角分形填充
            }
        }
    }
}

int main() {
    int d[10010] = { 0 };
    cin >> d[0];
    for (int i = 0; d[i] != -1; ) {    //保存输入的数据
        i++;
        cin >> d[i];
    }

    for (int i = 0; d[i] != -1; i++) {    //-1退出分形
        int a = d[i];
        for (int j = 1; j <= a; j++) {
            fen(j, a);
        }
        for (int m = 1; m <= pow(3, a - 1); m++) {//输出
            for (int n = 1; n <= pow(3, a - 1); n++) {
                if (fx[m][n] == 1) {
                    cout << 'X' << " ";
                }
                else {
                    cout << "  ";
                }
                fx[m][n] = 0;    //输出后顺便清空归零
            }
            cout << endl;
        }
        cout << endl << '-' << endl << endl;


    }
    return 0;
}


这是在poj上的截图

img

  • 写回答

2条回答 默认 最新

  • 我爱OJ 2023-03-02 19:30
    关注

    网上搜的,不知道对不对

    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    using namespace std;
    
    int n, W, cnt;
    char s[1001][1001];
    
    void b(int d, int x, int y){
        if(d==1)s[y][x]='X';
        else {
            int size = 1;
            for(int i=2;i<d;i++)size*=3;
            b(d-1,x,y);//左上
            b(d-1,x+2*size,y);//右上
            b(d-1,x+size,y+size);//中
            b(d-1,x,y+2*size);//左下
            b(d-1,x+2*size,y+2*size);//右下
        }
    }
    
    int main(){
        int size;
        scanf("%d", &n);
        do{
            memset(s,' ',sizeof(s));//提前填充空格
            b(n,0,0);
            size=1;
            for(int i=1;i<n;i++)size*=3;
            for(int i=0;i<size;i++){
                for(int j=size;j>0;j--)
                    if(s[i][j-1]=='X'){
                        s[i][j]='\0';
                        break;
                    }
                printf("%s\n",s[i]);        
            }
            printf("-\n");
            scanf("%d", &n);
        }while(n != -1);
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月2日

悬赏问题

  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集
  • ¥15 靶向捕获探针方法/参考文献