ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-02-06 12:00:21  阅读:169  来源: 互联网

标签:第一行 int II 二维 填数 2021 && include 一列


二维数组

定义

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

算法思想

  • 从倒数第二行开始,自底向上计算
    • 对于每一列来说, a[i][j] += min(a[i + 1][j], a[i + 1][j + 1]);
  • 最终结果在第一行第一列
#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 - 蛇形方阵

  • 使用二维数组a[][]来存储蛇形方阵
  • 使用变量x保存要填的数x = 0,使用变量r保存走到的行数,c保存走到的列数,r =1, c = n
  • 只要x < n * n,重复下面的操作:
    • 只要r + 1 <= n、并且a[r + 1][c]==0,填数、向下走
    • 只要c - 1 >= 1、并且a[r][c - 1]==0,填数、向左走
    • 只要r - 1 >= 1、并且a[r - 1][c]==0,填数、向上走
    • 只要c + 1 <= n、并且a[r][c + 1]==0,填数、向右走
#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 - 幻方

  • 首先将1写在第一行的中间。之后,按如下方式从小到大依次填写每个数K(

    标签:第一行,int,II,二维,填数,2021,&&,include,一列
    来源: https://blog.csdn.net/qiaoxinwei/article/details/113714098

    本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
    2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
    3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
    4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
    5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有