
昏, 那个不叫九宫图吧, 那个是螺旋矩阵, 比九宫图简单多了:
#include <iostream>
#include <cstring>
using namespace std;
const int size = 200;
int iM2Dimen[size][size];
#define M iM2Dimen
int Digit(int n)
{
int x = 0;
do{
++x;
n /= 10;
}while(n != 0);
return x;
}
void Print(int n)
{
int width = Digit(nn);
for(int i = 0; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
coutwidth(width);
cout << M[i][j] << ' ';
}
cout << endl;
}
}
void Helix(int n)
{
memset(M, 0, sizeof M);
int iR = -1, iC = -1;
int x = n;
// 把i <= nn 改成i < nn 看看
for(int i = 1, j = 0; i <= nn; ++i)
{
for(++iR, ++iC, j = 0; j < x; ++iC, ++i, ++j)
M[iR][iC] = i;
if(i > nn)break;
--x;
for(--iC, ++iR, j = 0; j < x; ++iR, ++i, ++j)
M[iR][iC] = i;
if(i > nn)break;
for(--iR, --iC, j = 0; j < x; --iC, ++i, ++j)
M[iR][iC] = i;
if(i > nn)break;
--x;
for(++iC, --iR, j = 0; j < x; --iR, ++i, ++j)
M[iR][iC] = i;
if(i > nn)break;
--i;
}
Print(n);
}
int main()
{
Helix(3);
cout << endl;
Helix(4);
cout << endl;
Helix(5);
cout << endl;
}
测试结果:
1 2 3
8 9 4
7 6 5
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
①:设圆心为x1、y1,求得圆心与坐标点x、y之间的距离L=sqrt((x-x1)(x-x1)+(y-y1)(y-y1)),然后再判断L是否大于1并且小于2,若判断结果为真,则输入的坐标点x,y在圆环内部。
②:问题:输入一个数n,输出n^2数阵,数阵为数字漩涡排列。
例:输入1,输出 1
输入2,
输出
1 2
3 4
输入3
输出
1 2 3
8 9 4
7 6 5
输入4
输出
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
是这个题么?
program hhs;
var
a,b,t,x:integer;
s:array[01000,01000]of integer;
begin
readln(x);
for a:=1 to 6 do begin
s[0,a]:=1;
s[x+1,a]:=1;
s[a,0]:=1;
s[a,x+1]:=1;
end;
t:=1;a:=1;b:=1;
while t<=xx do begin
s[a,b]:=t;
if (s[a-1,b]<>0)and(s[a+1,b]=0)and(s[a,b+1]<>0)then a:=a+1
else
if (s[a,b-1]=0)and(s[a+1,b]<>0)and(s[a,b+1]<>0)then b:=b-1
else
if (s[a-1,b]=0)and(s[a+1,b]<>0)and(s[a,b-1]<>0)then a:=a-1
else b:=b+1;
t:=t+1
end;
for a:=1 to x do begin
for b:=1 to x do
write(s[a,b]:5);
writeln;
end;
end
以上就是关于C++编程,用A*算法重排九宫图全部的内容,包括:C++编程,用A*算法重排九宫图、螺旋矩阵的三种算法 Pascal、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)