您的位置:首页 > 其它

螺旋矩阵

2014-04-03 19:21 169 查看
逆时针旋转的矩阵

#include<iostream>
using namespace std;
#define N 100
int a

;
void fun(int n)
{
int m=1,i,j;
for(i=0;i<n/2;i++)//只旋转n/2次
{
for(j=i;j<n-i;j++)//左侧
{
if(a[j][i]==0)
a[j][i] = m++;
}

for(j=i+1;j<n-i;j++)//下侧
{
if(a[n-i-1][j]==0)
a[n-i-1][j]= m++;
}

for(j=n-i-1;j>i;j--)//右侧
{
if(a[j][n-i-1]==0)
a[j][n-i-1]=m++;
}

for(j=n-i-1;j>i;j--)//上侧
{
if(a[i][j]==0)
a[i][j]=m++;
}
}

if(n%2==1)//注意当n为奇数的时候,最后有个正中心点
a[n/2][n/2] = m;
}

int main()
{
int n,i,j;
cout<<"请输入 n 的值:";
cin>>n;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
a[i][j] = 0;
}

fun(n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
system("pause");
return 0;
}


顺时针旋转矩阵

#include<iostream>
using namespace std;
#define N 100
int a

;
void fun(int n)
{
int m=1,i,j;
for(i=0;i<n/2;i++)//只旋转n/2次
{
for(j=i;j<n-i;j++)//上侧
{
if(a[i][j]==0)
a[i][j] = m++;
}
for(j=i;j<n-i;j++)//右侧
{
if(a[j][n-i-1]==0)
a[j][n-i-1]=m++;
}

for(j=n-i-1;j>i;j--)//下侧
{
if(a[n-i-1][j]==0)
a[n-i-1][j]=m++;
}

for(j=n-i-1;j>i;j--)//左侧
{
if(a[j][i]==0)
a[j][i]= m++;
}

}

if(n%2==1)//注意当n为奇数的时候,最后有个正中心点
a[n/2][n/2] = m;
}

int main()
{
int n,i,j;
cout<<"请输入 n 的值:";
cin>>n;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
a[i][j] = 0;
}

fun(n);

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: