Tôi có vấn đề này mà tôi cần phải giải quyết theo cách hiệu quả nhất. Tôi có một mảng 2d có chứa các thông tin sau: Mọi thứ là 1 là "bức tường" có nghĩa là bạn không thể đi qua nó. 2 là lối vào nơi bạn "nhập" mảng hoặc bản đồ nếu bạn muốn. 3 là những thứ chúng ta cần tìm. Dưới đây là một ví dụ về một bản đồ:Tìm "số" có sẵn trong mảng 2d
1111111
1 3131
2 11111
1 31
1111111
Đây có thể là một ví dụ về một mảng mà tôi cần phải xem xét trong Như bạn có thể thấy có một 3 đó là "không thể kết nối, vì nó được bao quanh bởi một bức tường". .... 1" Điều đó có nghĩa rằng có hai số có sẵn trong mảng này
tiên chúng ta cần phải tìm lối vào Từ lối vào có thể được bất cứ nơi nào tôi cần phải tìm kiếm toàn bộ mảng tôi đã làm như sau:
int treasureAmount = 0;
Point entrance = new Point(0,0);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; i++){
if(map[i][j] == 2){
entrance.x =i;
entrance.y =j;
}
}
Điều này cần thời gian O (n^2) và tôi không thực sự thấy một cách khác để thực hiện việc này, vì lối vào có thể ở bất cứ đâu. Tuy nhiên tôi không thực sự chắc chắn làm thế nào để tìm thấy những con số có sẵn effectivly và nhanh chóng. Tôi đã nghĩ đến khi tìm kiếm mảng cho lối vào, tôi sẽ tìm thấy tất cả số 3 trong mảng mặc dù một số có thể không truy cập được, và sau đó tôi không thực sự chắc chắn cách tìm kiếm có thể truy cập được.
O (n^2) (hoặc O (mn)) là cách tốt nhất bạn có thể làm ở đây. Vấn đề là liệu bạn có thể làm điều đó trong hoạt động ít hơn hay không ... – nhahtdh
_ "Đầu tiên chúng ta cần tìm lối vào ... lối vào có thể ở bất cứ nơi nào" _ là lối vào theo nghĩa đen ở bất cứ đâu, hoặc bị giới hạn ở "chu vi "của mảng - như trong ví dụ bạn cung cấp? – stormCloud
Lối vào có thể ở bất kỳ đâu trong mảng. Nó có thể là ở giữa hoặc trên "cạnh" –