- 前言
- 一、分治法
- 二、数字旋转方阵源码(C++)
- 三、动态分配数组
- 四、二维数组作为函数参数传递
- 总结
前言 分治法--数字旋转方阵
涉及的知识点由分治法、数组动态分配和二维数组做参传递。
一、分治法
分治法将一个难以直接解决的大问题分解为一些规模较小的子问题,分别求解各个子问题,再合并子问题的解得到原问题的解。主要分为三步,即划分,求解子问题,合并。划分的时候主要基于平衡子问题,且最好相互独立。
这里我们以数字旋转方阵为例,具体过程详见源码。
//数字旋转方阵 #includeusing namespace std; void Full(int number,int begin,int size,int **d) { int i, j, k; //递归边界,如果size==0,则无需填写。 if (size == 0) { return; } //递归边界,如果size==1,则只需填写number进去即可。 if (size == 1) { d[begin][begin] = number; return; } //初始化左上角坐标。 i = begin;j = begin; //填写A区域,填写size-1次。 for (k = 0; k < size - 1; k++) { d[i][j] = number; number++; i++; } //填写B区域,填写size-1次。 for (k = 0; k < size - 1; k++) { d[i][j] = number; number++; j++; } //填写C区域,填写size-1次。 for (k = 0; k < size - 1; k++) { d[i][j] = number; number++; i--; } //填写D区域,填写size-1次。 for (k = 0; k < size - 1; k++) { d[i][j] = number; number++; j--; } Full(number, begin + 1, size - 2, d); } int main() { //确认方阵阶数。 int number = 1, begin = 0, size; cout << "请输入方阵的阶数:"; cin >> size; //动态分配数组,二阶数组。 int** d = new int*[size]; for (int i = 0; i < size; i++) { d[i] = new int[size]; } //二阶数组赋值 for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { d[i][j] = 0; } } //调用数字旋转方阵。 Full(number, begin, size,d); //输出数字旋转方阵 cout << "数字旋转方阵:" << endl; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { cout< 结果:
三、动态分配数组
一维数组
void oneDimensionalArray() { //定义一个长度为10的数组 int* array = new int[10]; //赋值 for(int i = 0; i < 10; i++) { array[i] = i*2; } //输出 for(int i = 0; i < 10; i++) { cout << i << " : " << array[i] << endl; } //释放内存 delete[] array; }二维数组
void twoDimensionalArray() { //定义一个2*10的二维数组 int** array = new int*[2]; for(int i = 0; i < 2; i++) { array[i] = new int[10]; } //赋值 for(int i = 0; i < 2; i++) { for(int j = 0; j < 10; j++) { array[i][j] = i*10 + j; } } //输出 for(int i = 0; i < 2; i++) { for(int j = 0; j < 10; j++) { cout << "(" << i << ", " << j << ")" << array[i][j] << endl; } } //释放内存 for(int i = 0; i < 2; i++) { delete[] array[i]; } delete[] array; }以此类推
四、二维数组作为函数参数传递我在上面的示例采用二级指针作为函数参数来传递,具体讲解详见
https://blog.csdn.net/kangxidagege/article/details/79475537
最近不是很有空整理书写,希望后面有时间自己能够回来填坑。
总结总要写些什么去记录与分享,希望对你能够有帮助,而这就是我最大的开心与庆幸。



