for( i=0;i<temp.size()-1;i++){ route[fx][fy]=1; route[ex][ey]=1; for( int a=1; a<=m; a++) { for(int b=1; b<=n; b++) { if(a==temp[i].x && b==temp[i].y) { route[a][b] = 1; } } } printf("输出迷宫的结构:\n"); for( a=1; a<=m; a++) { for(int b=1; b<=n; b++) { if(route[a][b] == 1) { printf("1 "); } else { printf("0 "); } } printf("\n"); } }怎么优化
时间: 2023-12-10 16:41:50 浏览: 32
这段代码的主要问题在于每次循环都要重新遍历整个迷宫,使得时间复杂度较高。可以通过将遍历迷宫的操作提到循环外,以及使用一个数组记录需要标记的点的位置来优化代码。具体如下:
```c++
// 定义一个数组记录需要标记的点的位置
int flag[m+1][n+1] = {0};
for(int i = 0; i < temp.size()-1; i++) {
route[fx][fy] = 1;
route[ex][ey] = 1;
// 记录需要标记的点的位置
flag[temp[i].x][temp[i].y] = 1;
}
// 遍历整个迷宫,根据需要标记的点的位置进行标记
for(int a = 1; a <= m; a++) {
for(int b = 1; b <= n; b++) {
if(route[a][b] == 1 || flag[a][b] == 1) {
printf("1 ");
} else {
printf("0 ");
}
}
printf("\n");
}
```
这样做的好处是每次循环只需要操作数组记录需要标记的点的位置,而不需要遍历整个迷宫,提高了程序的效率。
相关问题
查看代码需要改进的地方for (int i = 0; i < arr.length-1; i++) { for (int i1 = i+1; i1 < arr.length; i1++) { if (arr[i]>arr[i1]){ int temp=0; temp=arr[i]; arr[i]=arr[i1]; } } }
A:在第一个循环中,i没有进行递增操作,而是漏写了"i++";在交换位置时,没有将arr[i1]赋值给arr[i],只是把arr[i1]赋给了temp变量,需要将temp的值赋给arr[i]。
正确代码如下:
for (int i = 0; i < arr.length-1; i++) {
for (int i1 = i+1; i1 < arr.length; i1++) {
if (arr[i]>arr[i1]){
int temp=0;
temp=arr[i];
arr[i]=arr[i1];
arr[i1]=temp;
}
}
}
帮我完善一下这道java题, int i , j; int a[] ={5,10,6,9,7}; for (i = 0 ;i < a.length-1;i ++ ) { int k = i; for (j = i;j < a.length ; j++ ) if () k=j; //填空15分 int temp =a[i]; a[i] = a[k]; a[k] = _;//填空15分 for ( i =0 ;i<a.length; i++ )System.out.print(a[i]+""); System.out.println( );
这段代码是选择排序算法的实现,其中有两个填空。对于第一个填空,可以使用以下代码:
```
if (a[j] < a[k]) k = j;
```
这将会在每次找到更小的数时更新 k 的值,最终得到最小的数的下标。对于第二个填空,可以使用以下代码:
```
int temp = a[i];
a[i] = a[k];
a[k] = temp;
```
这将会交换最小的数和当前位置的数,完成一次选择排序。完整代码如下:
```
int i, j;
int a[] = {5, 10, 6, 9, 7};
for (i = 0; i < a.length - 1; i++) {
int k = i;
for (j = i; j < a.length ; j++)
if (a[j] < a[k]) k = j; //填空15分
int temp = a[i];
a[i] = a[k];
a[k] = temp;//填空15分
for (i = 0; i < a.length; i++) System.out.print(a[i] + "");
System.out.println();
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)