桃园市网站建设_网站建设公司_服务器部署_seo优化
2025/12/24 15:53:20 网站建设 项目流程

2025年吉林大学计算机考研复试机试真题

2025年吉林大学计算机考研复试上机真题

历年吉林大学计算机考研复试上机真题

历年吉林大学计算机考研复试机试真题

更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream

N 诺 DreamJudge 题库:输入 “学校名称” 即可筛选该校历年机试真题,题目均在考纲范围内,按难度自动排序。还可搭配《计算机考研机试攻略》刷题,书中题目可通过题号直接在题库中查找。

旋转矩阵

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

不知道为什么,哈特一直对矩阵情有独钟。 从以前的“哈特13的矩阵”、“神奇的矩阵”到现在的“旋转方阵”,Orz. 旋转方阵是一个有n行m列的矩阵,每个矩阵格子里有一个数字。 同样地,旋转方阵有3种操作: 操作1:将方阵顺时针旋转90度 操作2:将方阵沿纵向对称轴翻折 操作3:将方阵逆时针旋转90度 现在将对方阵进行k次操作,输出最后的方阵状态。

输入输出格式
输入描述:

多组输入数据,约20组 每组数据n+2行,第一行有三个整数n、m和k,1<=n<=100,1<=m<=100,1<=100<=k 第2行到n+1行每行有m个数字,表示方阵的初始状态,方阵格子数字大小不超过10000, 第n+2行有k个数字,表示k个操作的编号

输出描述:

每组数据输出一个矩阵,表示最终的方阵状态。

输入输出样例
输入样例#:
2 3 1 1 2 3 4 5 6 1
输出样例#:
4 1 5 2 6 3

代码一

  1. #include <iostream>
  2. using namespace std;
  3. const int N = 110;
  4. int n, m, k;
  5. int a[N][N], b[N][N];
  6. void rotatep_90()
  7. {
  8. for (int i = 1, p = n; i <= n; i ++, p --)
  9. for (int j = 1, q = 1; j <= m; j ++, q ++)
  10. b[q][p] = a[i][j];
  11. for (int i = 1; i <= m; i ++)
  12. for (int j = 1; j <= n; j ++)
  13. a[i][j] = b[i][j];
  14. int tmp = n;
  15. n = m, m = tmp;
  16. }
  17. void rotaten_90()
  18. {
  19. for (int i = 1, p = 1; i <= n; i ++, p ++)
  20. for (int j = 1, q = m; j <= m; j ++, q --)
  21. b[q][p] = a[i][j];
  22. for (int i = 1; i <= m; i ++)
  23. for (int j = 1; j <= n; j ++)
  24. a[i][j] = b[i][j];
  25. int tmp = n;
  26. n = m, m = tmp;
  27. }
  28. void fold()
  29. {
  30. for (int i = 1; i <= n; i ++)
  31. for (int j = 1, p = m; j <= m; j ++, p --)
  32. b[i][p] = a[i][j];
  33. for (int i = 1; i <= n; i ++)
  34. for (int j = 1; j <= m; j ++)
  35. a[i][j] = b[i][j];
  36. }
  37. int main()
  38. {
  39. while (cin >> n >> m >> k)
  40. {
  41. for (int i = 1; i <= n; i ++)
  42. for (int j = 1; j <= m; j ++)
  43. cin >> a[i][j];
  44. while (k --)
  45. {
  46. int t;
  47. cin >> t;
  48. if (t == 1) rotatep_90();
  49. else if (t == 2) fold();
  50. else if (t ==3) rotaten_90();
  51. }
  52. for (int i = 1; i <= n; i ++)
  53. {
  54. for (int j = 1; j <= m; j ++)
  55. cout << a[i][j] << " ";
  56. cout << endl;
  57. }
  58. }
  59. return 0;
  60. }

代码二

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[105][105]={0};
  4. int b[105][105]={0};
  5. void op1(int a[105][105],int &n,int &m){
  6. for(int i=1;i<=n;i++){
  7. for(int j=1;j<=m;j++){
  8. b[j][n-i+1]=a[i][j];
  9. }
  10. }
  11. int tmp=0;
  12. tmp=n;
  13. n=m;
  14. m=tmp;
  15. for(int i=1;i<=n;i++){
  16. for(int j=1;j<=m;j++){
  17. a[i][j]=b[i][j] ;
  18. }
  19. }
  20. return;
  21. }
  22. void op2(int a[105][105],int &n,int &m){
  23. for(int i=1;i<=n;i++){
  24. for(int j=1;j<=m;j++){
  25. b[i][m-j+1]=a[i][j];
  26. }
  27. }
  28. for(int i=1;i<=n;i++){
  29. for(int j=1;j<=m;j++){
  30. a[i][j]=b[i][j] ;
  31. }
  32. }
  33. return;
  34. }
  35. void op3(int a[105][105],int &n,int &m){
  36. for(int i=1;i<=n;i++){
  37. for(int j=1;j<=m;j++){
  38. b[m-j+1][i]=a[i][j];
  39. }
  40. }
  41. int tmp=0;
  42. tmp=n;
  43. n=m;
  44. m=tmp;
  45. for(int i=1;i<=n;i++){
  46. for(int j=1;j<=m;j++){
  47. a[i][j]=b[i][j];
  48. }
  49. }
  50. return;
  51. }
  52. int main(){
  53. int n,m,k,op;
  54. while(cin>>n>>m>>k){
  55. memset(a,0,sizeof(a));
  56. int ops[105]={0};
  57. for(int i=1;i<=n;i++){
  58. for(int j=1;j<=m;j++){
  59. cin>>a[i][j];
  60. }
  61. }
  62. int cnt=0;
  63. while(k--){
  64. cin>>op;
  65. ops[cnt++]=op;
  66. }
  67. for(int i=0;i<cnt;i++){
  68. if(ops[i]==1){
  69. op1(a,n,m);
  70. }
  71. if(ops[i]==2){
  72. op2(a,n,m);
  73. }
  74. if(ops[i]==3){
  75. op3(a,n,m);
  76. }
  77. }
  78. for(int i=1;i<=n;i++){
  79. for(int j=1;j<=m;j++){
  80. if(j!=m) cout<<a[i][j]<<" ";
  81. else cout<<a[i][j]<<endl;
  82. }
  83. }
  84. }
  85. return 0;
  86. }

代码三

  1. #include<iostream>
  2. #include<vector>
  3. #include<algorithm>
  4. #include<deque>
  5. using namespace std;
  6. int maxi=0;
  7. int x,y;
  8. vector<vector<int>> op1(vector<vector<int>> mp)
  9. {
  10. auto mp2 = mp;
  11. for(int i=0;i<x;i++)
  12. {
  13. for(int j=0;j<y;j++)
  14. {
  15. mp[j][x-i-1] = mp2[i][j];
  16. }
  17. }
  18. int temp = x;
  19. x = y;
  20. y = temp;
  21. return mp;
  22. }
  23. vector<vector<int>> op2(vector<vector<int>> mp)
  24. {
  25. auto mp2 = mp;
  26. for(int i=0;i<x;i++)
  27. {
  28. for(int j=0;j<y;j++)
  29. {
  30. mp[i][j] = mp2[i][y-1-j];
  31. }
  32. }
  33. return mp;
  34. }
  35. vector<vector<int>> op3(vector<vector<int>> mp)
  36. {
  37. auto mp2 = mp;
  38. for(int i=0;i<x;i++)
  39. {
  40. for(int j=0;j<y;j++)
  41. {
  42. //mp[j][y-i-1] = mp2[i][j];
  43. mp[y-j-1][i] = mp2[i][j];
  44. }
  45. }
  46. int temp = x;
  47. x = y;
  48. y = temp;
  49. return mp;
  50. }
  51. int main()
  52. {
  53. int n,m,k;
  54. while(cin>>n>>m>>k)
  55. {
  56. int maxi = n>m?n:m;
  57. x=n;
  58. y=m;
  59. vector<vector<int>>mp(maxi,vector<int>(maxi));
  60. for(int i=0;i<n;i++)
  61. {
  62. for(int j=0;j<m;j++)
  63. {
  64. cin>>mp[i][j];
  65. }
  66. }
  67. for(int i=0;i<k;i++)
  68. {
  69. int op;
  70. cin>>op;
  71. if(op==1)
  72. {
  73. mp = op1(mp);
  74. }
  75. if(op==2)
  76. {
  77. mp = op2(mp);
  78. }if(op==3)
  79. {
  80. mp = op3(mp);
  81. }
  82. }
  83. for(int i=0;i<x;i++)
  84. {
  85. for(int j=0;j<y;j++)
  86. {
  87. cout<<mp[i][j]<<" ";
  88. }
  89. cout<<endl;
  90. }
  91. }
  92. }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询