其他分享
首页 > 其他分享> > 2021-2-6语法基础二二维数组II

2021-2-6语法基础二二维数组II

作者:互联网

二维数组

定义

int a[3][4]; //定义了一个由3个一维数组组成的,每个一维数组最多存放4个元素
int b[2][3] = {{1, 2, 3}, {4, 5, 6}}; //二维数组的初始化
a[1][2] = 3;
//输入一个二维表格
for(int i = 1; i <= n; i ++)
	for(int j = 1; j <= m; j ++)
		cin >> a[i][j];
//输出一个二维数组的数据
for(int i = 1; i <= n; i ++)
{
	for(int j = 1; j <= m; j ++)
		cout << a[i][j] << " ";
	cout << endl;
}

练习

c5020

算法思想

#include <iostream>
using namespace std;
int a[1510][1510];
int main()
{
  int n;
  cin >> n;
  //读入数塔
  for(int i = 1; i <= n; i ++)
    for(int j = 1;  j <= i; j ++)
      	cin >> a[i][j];  
  //从倒数第二行开始向上遍历每一行
  for(int i = n - 1; i >= 1; i --)
  {
    //枚举每一列,进行计算
    for(int j = 1; j <= i; j ++)
    {
      a[i][j] += min(a[i + 1][j], a[i + 1][j + 1]);
    }
  }
  //最终结果在第一行第一列
  cout << a[1][1] << endl;
  return 0;
}

c5019 - 蛇形方阵

#include <iostream>
#include <iomanip>
using namespace std;
int a[25][25];
int main()
{
  int n;
  cin >> n;
  int x = 1, r = 1, c = n;
  a[r][c] = x; //将1填入第一行最后一列
  while(x < n * n) //数字没有填满
  {
    //向下走,将x增加1并填入新的格子
    while(r + 1 <= n && a[r + 1][c] == 0) 
      a[++ r][c] = ++ x;
    //向左走,将x增加1并填入新的格子
    while(c - 1 >= 1 && a[r][c - 1] == 0)
      a[r][-- c] = ++ x;
    //向上走,将x增加1并填入新的格子
    while(r - 1 >= 1 && a[r - 1][c] == 0)
      a[-- r][c] = ++ x;
    //向右走,将x增加1并填入新的格子
    while(c + 1 <= n && a[r][c + 1] == 0)
      a[r][++ c] = ++ x;
  }
  //输出蛇形方阵
  for(int i = 1; i <= n; i ++)
  {
    for(int j = 1; j <= n; j ++)
    { 
      //setw设置域宽为4,不够补空格。
      //setiosflags(ios::left)设置向左对齐,在右边补空格
      cout << setw(4) << setiosflags(ios::left) << a[i][j];
    }
    cout << endl;   	
  }      
}

c5027 - 幻方