九度-1384

題目描述:
在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
輸入:
輸入可能包含多個測試樣例,對於每個測試案例,
輸入的第一行爲兩個整數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



#include<iostream>
using namespace std;
void creatmatri(int ** matri,int m,int n)
{

int i,j;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
		cin>>matri[i][j];
		}
	}

}

bool searchmatri(int** matri,int m,int n,int value)
{
int i,j;
	for(i=0;i<m;)
	{
		for(j=n-1;j>=0;)
		{
            if(value==matri[i][j])
            {
               return true;
            }

             else if(value>matri[i][j])
             {
             i++;
             }
            else
            {
                j--;
            }

		}

	}
	return false;

}


int main()
{
int m,n;
int key;
cin>>m>>n;
cin>>key;
int** matri=new int*[m];
for(int i=0;i<m;i++)
{
matri[i]=new int[n];
}

creatmatri(matri, m, n);

if(searchmatri(matri, m, n,key))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
for(int j=0;j<m;j++)
{
delete [] matri[j];
}
delete [] matri;



return 0;

}

爲什麼我不能AC,~~~~(>_<)~~~~ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章