1数组知识点
一维数组 一维数组的定义
存储类型 数据类型 数组名 [整数1]…[整数n],例如:int a[100],要注意下标从0开始,a[0]…a[99]。说明数组时元素个数一定要为常量。数组的排序有选择排序、插入排序、冒泡排序。数组排序还有一个函数sort,默认sort函数为升序,sort(a,a+n)。二维数组与一维数组类似,例如int a[5][6],格式为 数组名[下标1][下标2]。
2 解决问题
有趣的跳跃那个题的排序我用的选择排序:
for(int i=0;i<n-1;i++)
{
for(int j=0;j<=n-1;j++)
if(a[i]>a[j])
temp=a[i];
a[i]=a[j];
a[j]=temp;}
这样就是升序了。
也可用冒泡排序
for (int j=1; j<=n-1; ++j)
  for (int i=1; i<=n-j; ++i)
if (a[i]<a[i+1])
  {swap(a[i]),a[i+1])}
这样就达到降序的目的啦。
找配对数的那个题我用的是三个循环
for(j=1;j<=n;j++)
for(k=j+1;k<=n;k++)
for(m=k+1;m<=n;m++)
这样可能会超时,因此第三个循环可以二分查找,用二分查找的方法以防超时。
倒置排序的那个题先是倒序用
while(c!=0)
{s=s10+c%10;
c=c/10;}
b[j]=s;
然后再是排序
计算鞍点的那个题,是二维数组的运用,求每一行的最大值与每一列的最小值,
for ( i = 0; i < N; i++) {
Max = a[i][0]; 表示每一行的第一个数
for ( j = 0; j < N; j++) {
if (a[i][j]>=Max) {
X= i;
Y= j;
Max = a[i][j];
}
}
Min = Max;
for (int k = 0; k < N; k++) {每一行数最大 的
if (a[k][Y] < Min) 一列 求一列数中的
Min = a[k][Y]; 最小 数
扫雷的那个游戏的题,我是用的两个二维数组,一个字符数组、一个整型数组,令整型数组全为0,然后是地雷的
的输出字符*,不是地雷的用整型数组。
3感想
数组这个知识应用更广泛,但是数组这个的题理解做起来更加困难,例如对我来说数组后面的那几个题很是难做,例如矩形变换,反反复复等题,做这种比较复杂的题,我都会看很多遍,矩形变换这种题主要的是要找规律,90度旋转之后数组下标怎么变得等,找出规律之后就比较容易做啦。做复杂的题重要的是要有耐心,我在做很多遍都不对的时候,心里就很是烦躁,但越烦也就越做不出来,所以写复杂又比较长的代码是最重要的就是要平心静气的,有耐心。

收藏 打印