前阵子碰到个面试题感觉还挺有意思,让写个螺旋矩阵,当时时间紧写的还挺粗糙的,回家以后又重新完善了下。
#include <iostream>
using namespace std ;
int main()
{
int i, j;
int n;
cout << "请输入矩阵大小(1—15):" << endl;
cin >> n;
if (n > 0 && n < 16 )
cout << "蛇形矩阵结果:" << endl;
else
{
cout << "输入错误或超出范围!" << endl;
system("pause" );
return -1 ;
}
int ** matrix=new int *[n];
for (i = 0 ; i < n; i++)
{
matrix[i] = new int [n];
}
int m,k;
j = 0 ;
m = n;
int count = 1 ;
for (k = 0 ; k < (n+1 ) / 2 ; k++)
{
for (i = k; i < m; i++)
{
matrix[j][i] = count;
count++;
}
i--;
j++;
for (; j < m; j++)
{
matrix[j][i] = count;
count++;
}
j--;
i--;
for (; i >= k; i--)
{
matrix[j][i] = count;
count++;
}
i++;
j--;
for (; j > k; j--)
{
matrix[j][i] = count;
count++;
}
j++;
m--;
}
for (i = 0 ; i < n; i++)
{
for (j = 0 ; j < n; j++)
{
cout << matrix[i][j] << "\t" ;
}
cout << endl;
}
for (i = 0 ; i < n; i++)
{
delete [] matrix[i];
}
delete [] matrix;
system("pause" );
return 0 ;
}
说实在的,感觉完善以后也挺糙的...... 不过功能上基本没啥问题。