矩阵的外边缘逆序

如一个5X5的矩阵,然后对其进行逆序。
1
2
3
4
5
10
15
20
25
24
23
22
21
16
11
6
7
8
9
14
19
18
17
12
13

思想,每次一层矩阵的外边缘进行遍历。
`#include
#include
#include
#define N 5
using namespace std;
vector getedge(vector matrix,int n)
{
int col=sqrt(matrix.size());
int ccol=sqrt(matrix.size())-2n;
vectoredge;
int i;
for (i=col
n+n;i<col*n+n+ccol;i++){
printf ("%d\n",matrix[i]);
edge.push_back(matrix[i]);
}

    i=i+col-1;
    for (int j=0;j<ccol-1;i=i+col,j++)
        {
        printf ("%d\n",matrix[i]);
		edge.push_back(matrix[i]);
		}
    i=i-col-1;
    int j=i;
    for (;i>j-ccol+1;i--)
        {
		printf ("%d\n",matrix[i]);
		edge.push_back(matrix[i]);
	}
    i=i-col+1;
    for (;i>col*n+n;i=i-col)
        {
		printf ("%d\n",matrix[i]);
	edge.push_back(matrix[i]);
	}
    return edge;
}
int main()
{
	vector<vector<int> > test;
	vector <int >c;
	for (int i=0;i<N;i++)
		for (int j=0;j<N;j++)
		c.push_back(i*N+j+1);
		int num=0;
		if((int)sqrt(c.size())%2==0)
		num=sqrt(c.size())/2;
		else 
		num=sqrt(c.size())/2+1;
		for (int i=0;i<num;i++){
		
	test.push_back(getedge(c,i));
	//printf("%d",test.size());
}
	return 0;
 } `
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值