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

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

#include 
#include 

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

网上搜的,不知道对不对

#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);
}