螺旋队列

来源:互联网 发布:2017年淘宝虚假新规则 编辑:程序博客网 时间:2024/04/29 20:47


// 螺旋队列问题//1为原点,坐标为(0,0),以此点为中心顺时针旋转~~~~#include "stdafx.h"#include <iostream>#include <stdio.h>using namespace std;void output(int pos_x, int pos_y);int _tmain(int argc, _TCHAR* argv[]){int pos_x = 0;int pos_y = 0;for(pos_y = -2; pos_y <= 2; pos_y++){for(pos_x = -2; pos_x <= 2; pos_x++){//scanf("%d%d", &pos_x, &pos_y);output(pos_x, pos_y);}printf("\n");}getchar();getchar();return 0;}void output(int pos_x, int pos_y){int level = max(abs(pos_x), abs(pos_y)); //该点所在的层数int temp = 2 * level - 1;int y_right = temp * temp + level; //右边一列的中间的点int x_down = temp * temp + 3 * level;int y_left = temp * temp + 5 * level;int x_up = temp * temp + 7 * level;int value = 1;if(-pos_y == level)//上(x轴是变化的,y是不变的。层数与y有关系)value = x_up + pos_x; else if(-pos_x == level) //左value = y_left - pos_y;else if(pos_y == level) //下value = x_down - pos_x;elsevalue = y_right + pos_y;printf("%d ",value);}








// 打印出一个NxN的矩阵//从首坐标开始顺时针依次增大#include "stdafx.h"#include <stdio.h>#include <string.h>#define N  5void output(int a[N][N]){int loop = 0; //用来控制圈数int value = 1; //某个位置上的数值,从1开始依次递增for(loop = 0; loop < N / 2; loop++){//第一个for循环控制上边一列for(int up = 0; up < N - loop; up++){if(a[loop][up] == 0) //四条边相交的地方会重复a[loop][up] = value++;}//顺时针。右边一列。列固定。行改变。for(int rt = loop + 1; rt < N - loop; rt++){if(a[rt][N - loop - 1] == 0)a[rt][N - loop -1] = value++;}//下边一列。行不变。列改变for(int down = N - loop - 1; down >= loop; down--){if(a[N -loop - 1][down] == 0)a[N -loop - 1][down] = value++;}//左边一列。for(int lf = N - loop -1; lf > loop; lf--){if(a[lf][loop] == 0)a[lf][loop] = value++;}}if(0 != N / 2) //中间会多一个元素a[N / 2][N / 2] = N * N;//outputfor(int i = 0; i < N; i++){for(int j = 0; j < N; j++){printf("%d ",a[i][j]);}printf("\n");}}int _tmain(int argc, _TCHAR* argv[]){int a[N][N];//memset(a, 0, sizeof(a));for(int i = 0; i < N; i++){for(int j = 0; j < N; j++){a[i][j] = 0;}}output(a);getchar();return 0;}



ps:

第一次写成了    void output(int a[N][N], int  N)   睡觉   太挫了。。。。还没看出来。。。哎


二维数组初始化为全0  : 

memset(a, 0, sizeof(a));