简单模拟算法(1)
2020-12-13 03:11
标签:gre 调用 pre 算法 amp display import spl size 使用过python的pyautogui库的应该都知道官方文档有一个这样的例子: 源码如下: 这就类似于一个矩阵遍历方式,类似与我们所熟悉的深度优先搜索,在进入矩阵的时候一直贴着一边的墙壁运动,那么如何用c++来实现这样的一个算法呢? 首先定义一个矩阵来容纳这个区域: 矩阵的最大范围是50*50,当然用vector 定义了两个方向向量,然后是用一个dir来表示当前前进的方向。当然,在矩阵中需要判断位置是否合适,我们默认数值0表示该位置还未走过: 最后,来定义一下在矩阵中行走的方法: 从上面可以看出,每次走到矩阵的边缘的尽头时转换方向,如果下一个方向可以走就继续递归下去。为了方便查看矩阵行走的情况,来专门定义一个显示函数: 定义好了上面这些函数后,只需要在主函数中依次调用它们即可: 最终运行情况如下: 简单模拟算法(1) 标签:gre 调用 pre 算法 amp display import spl size 原文地址:https://www.cnblogs.com/viewts/p/11070314.html 1 import pyautogui
2
3 distance = 200
4 while distance > 0:
5 pyautogui.dragRel(distance, 0, duration = 0.5) #右
6 distance -= 10
7 pyautogui.dragRel(0, distance, duration = 0.5) #下
8 pyautogui.dragRel(-distance, 0, duration = 0.5) #左
9 distance -= 10
10 pyautogui.dragRel(0, -distance, duration = 0.5) #上
1 const int maxn = 50;
2 int M[maxn][maxn] = {0};
3 int m_size = 1;
1 const int array_x[] = {0, 1, 0, -1};
2 const int array_y[] = {1, 0, -1, 0};
3 int dir = 0;
1 bool check(int x, int y) {
2 if (x 0 || x >= m_size || y 0 || y >= m_size) {
3 return false;
4 }
5 if (M[x][y] > 0) {
6 return false;
7 }
8 return true;
9 }
1 void run(int x, int y, int step = 1) {
2 if (check(x, y)) {
3 M[x][y] = step;
4 if (!check(x + array_x[dir], y + array_y[dir])) {
5 dir = (dir + 1) % 4;
6 }
7 run(x + array_x[dir], y + array_y[dir], step + 1);
8 }
9 }
1 void display() {
2 for (int i = 0; i ) {
3 for (int j = 0; j ) {
4 printf("%-3d", M[i][j]);
5 }
6 printf("\n");
7 }
8 }
1 int main()
2 {
3 scanf("%d", &m_size);
4 run(0, 0);
5 display();
6 return 0;
7 }
上一篇:读取本地图片写到jsp页面