作者woody3724 (woody)
看板C_and_CPP
标题[问题] 二维阵列传递
时间Thu Dec 8 14:20:08 2016
最近开始写LeetCode
题目在这:
https://leetcode.com/problems/island-perimeter/
打算用C写
我想要自己使用Dev-C来写这题
因此会有个main()以及题目规定好的islandPerimeter()
假设我要在main里面先建立好我的二维grid,再将此grid传入islandPerimeter
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[4][4] = {{0,1,0,0},{1,1,1,0},{0,1,0,0},{1,1,0,0}};
islandPerimeter(arr,4,4);
.............
}
int islandPerimeter(int** grid, int gridRowSize, int gridColSize)
{
..........
}
这样一定是错的,置底就有说明了
因此我把main里的grid宣告改成
int main()
{
int **arr=(int**)malloc(sizeof(int*)*4);
int i;
for(i=0;i<4;i++)
arr[i] = (int*)malloc(sizeof(int)*4);
arr[0][0]=0;
arr[0][1]=1;
arr[0][2]=0;
arr[0][3]=0;
arr[1][0]=1;
arr[1][1]=1;
arr[1][2]=1;
arr[1][3]=0;
arr[2][0]=0;
arr[2][1]=1;
arr[2][2]=0;
arr[2][3]=0;
arr[3][0]=1;
arr[3][1]=1;
arr[3][2]=0;
arr[3][3]=0;
islandPerimeter(arr,4,4);
}
虽然这样就可以传入islandPerimeter(),但作法却很笨
不知道有没有办法在不改变
int islandPerimeter(int **grid, int gridRowSize, int gridColSize)
的情况下
在main里面宣告好grid呢
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.85.133.102
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1481178012.A.2D6.html
※ 编辑: woody3724 (219.85.133.102), 12/08/2016 14:34:01
1F:推 yvb: 再加上 int *grid[4] = {array[0], ...}; 这样如何? 12/08 14:32
2F:→ stupid0319: int **arr;这样不能算二维阵列吧,犯规了 12/08 15:03
3F:推 steve1012: Leetcode 还是用c++吧..没container很辛苦 12/08 16:18
4F:→ hunandy14: 乾脆把二维变成一维来实作,存取在算x, y位置 12/08 17:09
5F:→ hunandy14: 或者确定长度的话 可以 int* arr[len]; 这样子的二维 12/08 17:10
6F:→ hunandy14: 不知道我有没有理解对,不太清楚你的'笨'具体定义QuQ 12/08 17:13
7F:推 nsc: 题目就是要吃 int**,就算用二维要 submit 时还是要改回来… 12/08 21:06
8F:→ nsc: 不如用一楼的… 12/08 21:07
9F:推 purpon: 用&arr. 这里用pointer to pointer是因为这样才能改到arr 12/08 22:20
10F:→ purpon: 的值吧。 12/08 22:20
11F:推 laladeer: 用一维取代二维,习惯後会非常好用 12/08 22:36
12F:→ woody3724: 题目就是要吃int**没错,一楼的方法最好,谢谢罗! 12/13 14:14