|
发表于 2024-2-29 18:55:50
|
显示全部楼层
首先你这个定义的就不对 , 你定义二维数组最少要定义一维的长度
发现你这里如果没值就是 0 了 , 所以对于每一行可以找到第一个 0 出现的位置 , 就是长度了
找这个可以顺序找, 也可以二分快一些
- #include <bits/stdc++.h>
- using namespace std;
- unsigned char arr_tab[][20] = {
- {1,2,3,4,5,6,7}, //行1 7列
- {9,10,11,12,13,14}, //行2 6列
- {15,16,17,18,19,20}, //行3 6列
- {21,22,23,24,25,26,25}, //行4 7列
- {27,28,29,30,31}, //行5 5列
- };
- int main(){
- ios::sync_with_stdio(0);
- cin.tie(0);
- for(int i = 0; i < 5; i++){
- // 方法 1
- for(int j = 0; j < 20; j++){
- if(arr_tab[i][j] == 0){
- cout << "ln: " << i + 1 << " col: " << j << '\n';
- break;
- }
- }
- // 方法 2 二分查找
- int l = 0, r = 19, mid, ans;
- while(l <= r){
- mid = (l + r) / 2;
- if(arr_tab[i][mid] == 0) ans = mid, r = mid - 1;
- else l = mid + 1;
- }
- cout << "ln: " << i + 1 << " col: " << ans << '\n';
- }
- return 0;
- }
复制代码 |
|