矩阵圈层90度交错旋转
题目描述:
给定一个n x n的二维整数矩阵,你需要对这个矩阵的每一“圈层”的元素进行交错旋转,规则如下:
圈层的定义:
(1)矩阵从最外层开始,向内逐层定义“圈层”。最外层的元素构成第一圈层,移除最外层后剩余矩阵的最外层元素构成第二圈层,以此类推。
(2)如果n为奇数,最中心的一个元素属于最内层的圈层,且旋转后其值不改变。
旋转方向:
(1)最外层(第一圈层)的元素按照顺时针方向整体旋转90度。
(2)次外层(第二圈层)的元素按照逆时针方向整体旋转90度。
(3)再往内一层(第三圈层)的元素按照顺时针方向整体旋转90度。
以此类推,圈层的旋转方向在顺时针和逆时针之间交替进行。
旋转范围:
每一圈层的旋转仅限于该圈层内的元素。
例:一个6x6矩阵的圈层和旋转方向定义如下:

例:当n=4,原始矩阵经过圈层交错旋转后结果如下:

输入描述:
第一行输入一个正整数n(2≤n≤100),表示矩阵的行数和列数;
接下来n行,每行输入n个整数(-1000≤整数≤1000),整数之间以一个空格隔开。
输出描述:
输出n行,每行n个整数,整数之间以一个空格隔开,表示经过圈层交错旋转90度变换后的矩阵。
样例输入:
4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
样例输出:
13 9 5 1 14 7 11 2 15 6 10 3 16 12 8 4
相似题推荐
茶具套装
题目描述:
佳佳在一家茶具商店工作,有客户要订购一些茶具套装,一套完整的茶具套装包含1个茶壶、1个盖碗、1个茶漏以及4个茶杯。
现在已知茶壶、盖碗、茶漏和茶杯各自的数量,需要编写一个程序来计算最多能够组成多少套完整的茶具套装。
例如:茶壶、盖碗、茶漏和茶杯各自的数量分别是3,4,2,13。根据这些茶具的数量,佳佳最多能组成 2 套完整的茶具套装。
输入描述:
输入4个整数(0≤整数≤100),分别表示茶壶、盖碗、茶漏和茶杯各自的数量,整数之间以一个空格隔开。
输出描述:
输出一个整数,表示最多能组成完整的茶具套装数量。
样例输入:
3 4 2 13
样例输出:
2
交换字符
题目描述:
给定一个字符串S,其中仅包含字符 "A" 和字符 "B"。你每次可以选择交换两个位置相邻的字符。
请计算如果要使奇数位置上(位置从1开始)字符 "A" 的数量等于偶数位置上字符 "A" 的数量,最少需要进行多少次交换操作。
例如:S = "AABABA",从左往右数,奇数位置上字符 "A" 的数量为1(位置1),偶数位置上 "A" 的数量为3(位置2、4、6);
可将位置 2 的字符 "A" 和位置 3 的字符 "B" 交换,交换后,奇数位置上字符 "A" 的数量和偶数位置上字符 "A" 的数量都为 2,满足题目要求,故最少需要交换一次。
输入描述:
输入一个字符串S(2≤S的长度≤10^5),其中仅包含字符 "A" 和字符 "B"。
输出描述:
输出一个整数,表示满足题目要求的最少交换次数,如果无论怎么交换都无法满足题目要求,则输出 -1。
样例输入:
AABABA
样例输出:
1
运行以下c++程序,输出的结果是?( )
int func(int y){
y -=5;
cout << "X";
return 0;
}
int main(){
int x = 10, y = 5;
if(x > y || func(y))
cout << y;
return0;
} | A. X0 |
B. X5 |
| C. 5 |
D. 0 |
运行以下c++程序,输出的结果是?( )
int i = 1, t = 0;
while(i * i < 30){
t +=1;
i +=2;
}
cout << t; | A. 3 |
B. 4 |
| C. 9 |
D. 16 |
