二維數組中的尋找,二維數組尋找
-
題目描述:
-
在一個二維數組中,每一行都按照從左至右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
-
輸入:
-
輸入可能包含多個測試範例,對於每個測試案例,
輸入的第一行為兩個整數m和n(1<=m,n<=1000):代表將要輸入的矩陣的行數和列數。
輸入的第二行包括一個整數t(1<=t<=1000000):代表要尋找的數字。
接下來的m行,每行有n個數,代表題目所給出的m行n列的矩陣(矩陣如題目描述所示,每一行都按照從左至右遞增的順序排序,每一列都按照從上到下遞增的順序排序。
-
輸出:
-
對應每個測試案例,
輸出”Yes”代表在二維數組中找到了數字t。
輸出”No”代表在二維數組中沒有找到數字t。
-
範例輸入:
-
3 3
5
1 2 3
4 5 6
7 8 9
3 3
1
2 3 4
5 6 7
8 9 10
3 3
12
2 3 4
5 6 7
8 9 10
-
範例輸出:
-
Yes
No
No//// main.c// 二維數組中的尋找//// Created by 李亞坤 on 14-9-27.// Copyright (c) 2014年 李亞坤. All rights reserved.//#include <stdio.h>#include <stdlib.h>#define MAX 1000000int find(int m, int n, int target,int a[]){ // 二分搞起了 int middle, left, right; left = 0; right = m * n; while (left < right) { middle = (left + right - 1) / 2; if (target > a[middle]) { left = middle + 1; } else if (target < a[middle]) { right = middle; } else return 0; } return -1;}int main(int argc, const char * argv[]) { int a[MAX]; int m, n; int i, j; int target; scanf("%d %d", &m, &n); scanf("%d", &target); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &a[i * m + j]); } } if (find(m, n, target, a) == 0) printf("Yes\n"); else printf("No\n"); return 0;}
怎尋找二維數組
var Employees = [['0', '50人以下'], ['1', '50-200人'], ['2', '200-500人'], ['3', '500-1000人'], ['4', '1000人以上']];
function (n){
if (typeof n == 'number'){
alert(Employees[n][1]);
return Employees[n][1];
}
}
隨機產生一個0-9的二維數組,在二維數組中尋找一個數,如果找到就顯示該元素的下標及數組的值
'二維數組:
Private Sub Command1_Click()
Dim i, j, arr(1 To 10, 1 To 2) As Integer, t, flag As Boolean
Cls
For i = 1 To UBound(arr, 2)
For j = 1 To UBound(arr, 1)
Randomize
arr(j, i) = Int(Rnd * 11)
Print arr(j, i);
Next
Print
Next
Do
t = InputBox("輸入一個需要尋找的數:", , 5)
If IsNumeric(t) Then Exit Do
Loop
t = Val(t)
For i = 1 To UBound(arr, 1)
For j = 1 To UBound(arr, 2)
If t = arr(i, j) Then
Print "arr(" & i & "," & j & ")=" & t
flag = True
End If
Next
Next
If Not flag Then MsgBox "未找到數:" & t
End Sub