当前位置:   article > 正文

C++二维数组超详全解!认识二维数组及其特点,学会分析下标之间的关系。超全超详细,层层递进,逐一解析。

C++二维数组超详全解!认识二维数组及其特点,学会分析下标之间的关系。超全超详细,层层递进,逐一解析。

首先,抱歉拖更了1个多月,其次,为了让程序的结构更加明确,我将会把代码写得更紧凑些,希望不影响观看,谢谢。。。

目录

一、认识二维数组及其特点

二、学会分析下标之间的关系

一、认识二维数组及其特点

一维数组只是一条数据,不能进行分类或表示更多意义。二维数组则是一张表格,可以存储分类跟多数据意义也随之增加

定义:数据类型(typename) 数组名[行数][列数],……,……;

和一维数组相比只是多了一个[行数]

一定要注意:二维数组的下标一般用“数对”表示,不过是先行后列!先行后列!先行后列!(重要的事情说三遍),如上图。还有,二维数组的下标也是从0开始(也可以忽略第0行,或第0列)

一般输入时,要先输入行数和列数(n和m),输入输出时,二维数组就要用双重循环

注意!二维数组做函数参数时要这么写:

二、学会分析下标之间的关系

先是一道例题。。。

输入一个行数,再输入两个正方形数组a和b。判断如果a数组等于b数组,输出0;如果a数组向右旋转90°等于b数组,则输出1;如果a数组向右旋转180°等于b数组,则输出2;如果a数组向右旋转270°等于b数组,则输出3;否则都不满足,则输出-1。

代码:

这道题的关键就是要做到向右旋转。下标之间一定是有关系的,我们如何知道它们之间的关系,可以用“代入模拟法”(自己取的)。

 变化如下:

 所以,

 向右旋转180°、270°的方法也可以用“代入模拟法”做出来,当然也可以看成旋转2或3次90°时间复杂度可能会比较高)。

代码:

 最后用main函数调用一下:

 OK啦!!!

代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. void input(int a[][25],int n){
  4. for(int i=1;i<=n;i++)
  5. for(int j=1;j<=n;j++)
  6. cin>>a[i][j];
  7. }
  8. bool check1(int a[][25],int b[][25],int n){
  9. for(int i=1;i<=n;i++)
  10. for(int j=1;j<=n;j++)
  11. if(a[i][j]!=b[i][j])
  12. return 0;
  13. return 1;
  14. }
  15. bool check2(int a[][25],int b[][25],int n){
  16. int c[25][25];
  17. for(int i=1;i<=n;i++)
  18. for(int j=1;j<=n;j++)
  19. c[j][n-i+1]=a[i][j];
  20. if(check1(c,b,n))
  21. return 1;
  22. return 0;
  23. }
  24. bool check3(int a[][25],int b[][25],int n){
  25. int c[25][25];
  26. for(int i=1;i<=n;i++)
  27. for(int j=1;j<=n;j++)
  28. c[n-i+1][n-j+1]=a[i][j];
  29. if(check1(c,b,n))
  30. return 1;
  31. return 0;
  32. }
  33. bool check4(int a[][25],int b[][25],int n){
  34. int c[25][25];
  35. for(int i=1;i<=n;i++)
  36. for(int j=1;j<=n;j++)
  37. c[n-j+1][i]=a[i][j];
  38. if(check1(c,b,n))
  39. return 1;
  40. return 0;
  41. }
  42. int main(){
  43. int a[25][25],b[25][25];
  44. int n;
  45. cin>>n;
  46. input(a,n);
  47. input(b,n);
  48. if(check1(a,b,n))
  49. cout<<0;
  50. else if(check2(a,b,n))
  51. cout<<1;
  52. else if(check3(a,b,n))
  53. cout<<2;
  54. else if(check4(a,b,n))
  55. cout<<3;
  56. else
  57. cout<<-1;
  58. return 0;
  59. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/319700
推荐阅读
相关标签
  

闽ICP备14008679号