二维数组:
数组声明:  int matrix[2][2] = {{1,2}, {3,4}}

数组索引: 嵌套循环:

二维数组初始化+随机洗牌(reshuflle)

code:

#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstdlib>
#include <time.h>using namespace std;const int ROW_SIZE = 10;
const int COL_SIZE = 10;void printMatrix(int matrix[][COL_SIZE], int row, int col);
void reshuffleMatrix(int matrix[][COL_SIZE], int, int);
int matrixSum(int matrix[][COL_SIZE], int, int);int main(int argc, char *argv[])
{//srand(time(0));int matrix[ROW_SIZE][COL_SIZE];for(int row=0; row<ROW_SIZE; row++){for(int col=0; col<COL_SIZE; col++){matrix[row][col] = row + col;}}cout << "The matrix before reshuffle: " << endl;printMatrix(matrix, ROW_SIZE, COL_SIZE);reshuffleMatrix(matrix, ROW_SIZE, COL_SIZE);cout << "The matrix after reshuffle: " << endl;printMatrix(matrix, ROW_SIZE, COL_SIZE);int mat_sum = matrixSum(matrix, ROW_SIZE, COL_SIZE);cout << "The sum of the matrix is " << mat_sum << endl;return 0;
}void printMatrix(int matrix[][COL_SIZE], int row, int col)
{for(int i=0; i<row; i++){for(int j=0; j<col; j++){cout << setw(4) << matrix[i][j] << "  ";}cout << endl;}
}void reshuffleMatrix(int matrix[][COL_SIZE], int row, int col)
{srand(time(0));for(int i=0; i<ROW_SIZE; i++){for(int j=0; j<COL_SIZE; j++){int rand_i = rand() % ROW_SIZE;  // int rand_j = rand() % COL_SIZE;// swap the matrixint tmp = matrix[i][j];matrix[i][j] = matrix[rand_i][rand_j];matrix[rand_i][rand_j] = tmp;}}
}int matrixSum(int matrix[][COL_SIZE], int row, int col)
{int sum = 0;for(int i=0; i<ROW_SIZE; i++){for(int j=0; j<COL_SIZE; j++){sum += matrix[i][j];}}return sum;
}

二维数组做为函数参数:
C++规定,二维数组作为函数参数,必须声明二维数组的列的大小。

问题:找最近邻点对。

#include <iostream>
#include <cmath> using namespace std;double getDistance(double, double, double, double);int main(int argc, char *argv[])
{const int NUMBER_OF_POINT = 8;double point[NUMBER_OF_POINT][2];// 输入点的数据cout << "Enter " << NUMBER_OF_POINT << " Points." << endl;for(int i=0; i<NUMBER_OF_POINT; i++){cin >> point[i][0] >> point[i][1];} int p1 = 0;int p2 = 1;double shortest_distance = getDistance(point[p1][0], point[p1][1], point[p2][0], point[p2][1]);// 计算点之间的距离 for(int i=0; i<NUMBER_OF_POINT-1; i++){for(int j=i+1; j<NUMBER_OF_POINT; j++){double tmp_distance = getDistance(point[i][0], point[i][1], point[j][0], point[j][1]);cout << "Distance is " << tmp_distance << endl;if(tmp_distance < shortest_distance){shortest_distance = tmp_distance;p1 = i;    // 记录下坐标 p2 = j;}}} cout << "The shotrst distance is " << shortest_distance << endl;cout << "The point is " << "(" << point[p1][0] << "," << point[p1][1] << ")" << " and " << "(" << point[p2][0] << "," << point[p2][1] << ")" << endl;return 0;
}double getDistance(double x1, double y1, double x2, double y2)
{return sqrt(pow(x1-x2, 2) + pow(y1-y2, 2));
}

结果:

改进: 如果有多个最小点怎么找到

数度游戏

给定一个数独问题的解,验证其是否正确

即需要验证:

(1)每一行的姐是否满足条件

(2)每一列的解是否满足条件

(3)每一个3X3的网格内是否满足条件

#include <iostream>
#include <cmath> using namespace std;bool isValid(int, int, int grid[][9]);
bool isValid(int grid[][9]);int main(int argc, char *argv[])
{int solution[9][9] = {{5,3,4,6,7,8,9,1,2},{6,7,2,1,9,5,3,4,8},{1,9,8,3,4,2,5,6,7},{8,5,9,7,6,1,4,2,3},{4,2,6,8,5,3,7,9,1},{7,1,3,9,2,4,8,5,6},{9,6,1,5,3,7,2,8,4},{2,8,7,4,1,9,6,3,5},{3,4,5,2,8,6,1,7,9}};if(isValid(solution)){cout << "The Sudoku solution is legal " << endl;}else{cout << "The Sudoku solution is illegal" << endl;  }return 0;
}bool isValid(int i, int j, int grid[][9])
{// 判断数独的解是否合法for(int col=0; col<9; col++)   // 判断第i行 {if(col!=j && grid[i][j]==grid[i][col])return false;}for(int row=0; row<9; row++)   // 判断第j列 {if(row!=i && grid[row][j]==grid[i][j])return false; } for(int row=(i/3)*3; row<(i/3)*3+3; row++)    // 注意这里的处理方法,很重要 {for(int col=(j/3)*3; col<(j/3)*3+3; col++){if(row!=i && col!=j && grid[row][col]==grid[i][j])return false;     }}return true;
}bool isValid(int grid[][9])
{for(int i=0; i<9; i++){for(int j=0; j<9; j++){if(grid[i][j]<1 || grid[i][j] >9 || !isValid(i, j, grid))return false; }   }return true;
}

多维数组作为参数:

猜生日:多维数组解决

#include <iostream>
#include <cmath>
#include <iomanip>using namespace std;int main(int argc, char *argv[])
{int day = 0;char answer;int dates[5][4][4] = {{{1,3,5,7},{9,11,13,15},{17,19,21,23},{25,27,29,31}, },{{2,3,6,7},{10,11,14,15},{18,19,22,23},{26,27,30,31} },{{4,5,6,7},{12,13,14,15},{20,21,22,23},{28,29,30,31} },{{8,9,10,11},{12,13,14,15},{24,25,26,27},{28,29,30,31} },{{16,17,18,19},{20,21,22,23},{24,25,26,27},{28,29,30,31} }};for(int i=0; i<5; i++){cout << "Is your birthday in set ?" << endl;for(int j=0; j<4; j++){for(int k=0; k<4; k++){cout << setw(3) << dates[i][j][k];}cout << endl;}cout << endl << "Enter yes or no(y/n)" << endl;cin >> answer;if(answer=='y' || answer=='Y')day += dates[i][0][0];}cout << "Your birthday is " << day << endl;return 0;
}

c++学习笔记(5)相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

  10. NuGet学习笔记(3) 搭建属于自己的NuGet服务器

    文章导读 创建NuGetServer Web站点 发布站点到IIS 添加本地站点到包包数据源 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重 ...

最新文章

  1. Linux13-bash脚本编程基础及配置文件
  2. 目标定位--Deep Self-Taught Learning for Weakly Supervised Object Localization
  3. 关于jquery-Validate
  4. 来自Riot 的一份游戏美术教程(五):技术美术
  5. 机器学习面试题(part3)
  6. 最新的INTEL FPGA时序分析资料
  7. 一个超轻量级工作流引擎:Workflow-Core
  8. 正向代理与反向代理;
  9. Java文件保存与删除工具类
  10. java 根号_没见过的 Java 入门教程之三!例程使用中文标识符代码:各种变量
  11. new Random().nextInt
  12. oracle mac版安装步骤,Mac版安装oracle教程
  13. 一个检测PC机软硬件系统信息的工具——EVEREST
  14. 小程序地图切换地图卫星地图 继承上次代码
  15. android七牛短视频sdk源码,使用七牛开发短视频
  16. 智慧屏鸿蒙1.0和2.0区别,0到1的过程不容易,首发鸿蒙系统的荣耀智慧屏一文看懂有何优势...
  17. 鸿蒙系统2.0崩溃了,集体失声?鸿蒙系统官宣后,鸿蒙系统的真实现状显现
  18. 使用phpstorm将本地代码实时自动同步到远程服务器
  19. python中stripped string_22-.strings 和 stripped_strings变量多个文本
  20. 各linux桌面性能比较,七大顶级桌面比较!Linux平台自由选择

热门文章

  1. SpringCloud工作笔记046---PostMan打不开怎么解决
  2. Dubbo学习笔记001---分布式服务调用_Dubbo简介_依赖zookeeper做为注册中心进行服务注册与发现
  3. NuGet学习笔记001---了解使用NuGet给net快速获取引用
  4. 如何删除win7Windows.old文件
  5. 9W人脸清洗的问题--20170208
  6. C语言小技巧之怎么找到需要的部分
  7. python 调用dll 参数_python调用dll
  8. 随想录(学习nxp rt1052 soc)
  9. python编程(pdb调试)
  10. 随想录(符号数据与无符号数据)