您的位置:首页 > 其它

蓝桥杯之奇怪的比赛

2017-01-22 18:02 204 查看
题目

对一个方阵转置,就是把原来的行号变列号,原来的列号变行号。例如,如下方阵:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

转置后变为:

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16

但如果是对该方阵顺时针旋转(不是转置),却是如下结果:

13 9 5 1

14 10 6 2

15 11 7 3

16 12 8 4

这道题是在蓝桥杯中是填空题,主要找规律

//

// 1 2 3 4

// 5 6 7 8

// 9 10 11 12

// 13 14 15 16

//13 9 5 1

//14 10 6 2

//15 11 7 3

//16 12 8 4

//找规律

// X Y

// 0 3 3-0*4

// 1 7 3+1*4

// 2 11 3+2*4

// 3 15 3+3*4

// 4 2 2+0*4

// 5 6 2+1*4

// …

// 8 1 1+0*4

// …

// 12 0 0+0*4

include<iostream>
#include<stdio.h>
#include<malloc.h>
using namespace std;
void rotate(int *x,int rank)
{
int *y=(int*)malloc(sizeof(int));  //填空
for(int i=0;i<rank*rank;i++)
{ y[3-i/4+i%4*4]= x[i];  //填空
}
for(int i=0;i<rank*rank;i++) x[i]=y[i];
free(y);
}

int main(int argc,char *argv[])
{ int x[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int rank=4;
rotate(&x[0][0],rank);
for(int i=0;i<rank;i++)
{ for(int j=0;j<rank;j++)    printf("%4d",x[i][j]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: