题目在这个网址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上的截图