9度_タイトル1384:2 D配列での検索
2078 ワード
//一部の答えが通るのは、最悪のこと
時間制限:1秒メモリ制限:32メガ特殊判定:Noコミット:12959解決:2562問題説明:2 D配列では、各行が左から右に増加する順序でソートされ、各列が上から下に増加する順序でソートされます.関数を完了し、このような2次元配列と整数を入力して、配列にその整数が含まれているかどうかを判断してください.入力:入力には複数のテストサンプルが含まれる場合があります.各テストケースについて、入力する最初の動作の2つの整数mとn(1<=m、n<=1000):入力するマトリクスの行数と列数を表します.入力された2行目には、検索する数値を表す整数t(1<=t<=1000000)が含まれます.次のm行は、行ごとにn個の数があり、テーマを表すm行n列の行列(マトリクスは、タイトル記述のように、各行が左から右へインクリメントされた順に並べ替えられ、各列が上から下へインクリメントされた順に並べ替えられている.出力:各テストケースに対応して、出力「Yes」は、2次元配列においてデジタルtが見つかったことを表す.出力「No」は、2次元配列においてデジタルtが見つからなかったことを表す.サンプル入力:3 3 3 3 5 1 2 3 4 4 4 7 8 3 3 3 3 3 3 3 3 4 4 4 6 6 6 8 10 3 2 2 2 2 3 3 3 3 4 4 4 6 7 9 10サンプル出力出:Yes No No
時間制限:1秒メモリ制限:32メガ特殊判定:Noコミット:12959解決:2562問題説明:2 D配列では、各行が左から右に増加する順序でソートされ、各列が上から下に増加する順序でソートされます.関数を完了し、このような2次元配列と整数を入力して、配列にその整数が含まれているかどうかを判断してください.入力:入力には複数のテストサンプルが含まれる場合があります.各テストケースについて、入力する最初の動作の2つの整数mとn(1<=m、n<=1000):入力するマトリクスの行数と列数を表します.入力された2行目には、検索する数値を表す整数t(1<=t<=1000000)が含まれます.次のm行は、行ごとにn個の数があり、テーマを表すm行n列の行列(マトリクスは、タイトル記述のように、各行が左から右へインクリメントされた順に並べ替えられ、各列が上から下へインクリメントされた順に並べ替えられている.出力:各テストケースに対応して、出力「Yes」は、2次元配列においてデジタルtが見つかったことを表す.出力「No」は、2次元配列においてデジタルtが見つからなかったことを表す.サンプル入力:3 3 3 3 5 1 2 3 4 4 4 7 8 3 3 3 3 3 3 3 3 4 4 4 6 6 6 8 10 3 2 2 2 2 3 3 3 3 4 4 4 6 7 9 10サンプル出力出:Yes No No
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int row=0,col=0,num=0;
while(cin>>row>>col)
{
int flag=0;
int min=0;//to store the smaller num of row and col
int temp=0;
cin>>num;
int **array=new int *[row];
for(int i=0;i<row;i++)
{
array[i]=new int[col];
for(int j=0;j<col;j++)
scanf("%d",&array[i][j]);
}
if(num<array[0][0]){cout<<"No"<<endl;continue;}
if(row<col)
min=row;
else
min=col;
for(int i=0;i<min;i++)
{
if(array[i][i]==num)
{
cout<<"Yes"<<endl;
flag=1;
}
else if(array[i][i]>num||i==min-1)
{
temp=i;
break;
}
}
if(temp!=min-1)
{
int index=temp-1;
for(int i=temp;i<col;i++)
if(array[index][i]==num)
{cout<<"Yes"<<endl;flag=1;}
for(int i=0;i<temp;i++)
if(array[temp][i]==num)
{cout<<"Yes"<<endl;flag=1;}
}else
{
if(min==row)
{
for(int i=min;i<col;i++)
if(array[min-1][i]==num)
{cout<<"Yes"<<endl;flag=1;}
}else
{
for(int i=min;i<row;i++)
{
for(int j=0;j<col;j++)
{
if(array[i][j]==num)
{cout<<"Yes"<<endl;flag=1;}
}
}
}
}
if(!flag)
cout<<"No"<<endl;
}
return 0;
}