c++じゅうたんを敷く

2099 ワード

今日はカーペットを敷くプログラムを作りました.
テーマは大体以下の通りです.
タイトルの説明
ユニークな授賞式を準備するために、組織者は会場の矩形の領域(平面直角座標系の第1象限と見なすことができる)に矩形の絨毯を敷いた.全部でnn枚のじゅうたんがあり、番号は11からnnまでです.これらのカーペットは、座標軸に平行に番号付けされ、前に敷かれたカーペットの上に後ろに敷かれています.
カーペットの敷設が完了すると、組織者は地面のある点を覆う一番上のカーペットの番号を知りたいと思っています.注意:長方形のカーペット境界と4つの頂点の点もカーペットで覆われています.(本題はCSDNブロガー「Zero_979」のオリジナル記事原文リンク:https://blog.csdn.net/Zero_979/article/details/82594899)
にゅうしゅつりょくけいしき
入力形式:
入力共n+2 n+2行
第1行、1つの整数nn、全部でnn枚のじゅうたんがあることを表します
次のnn行では、i+1 i+1行目は番号iiの絨毯を示す情報であり、4つの正の整数a,b,g,ka,b,g,kを含み、2つの整数の間に1つのスペースで区切られ、それぞれ絨毯を敷設する左下角の座標(a,b)(a,b)および絨毯のxx軸とyy軸方向の長さを表す
n+2 n+2行目は2つの正の整数xxとyyを含み、求めた地面の点の座標(x,y)(x,y)を表す.
 
出力フォーマット:
出力は全部で11行で、1つの整数で、求めたカーペットの番号を表します.ここでカーペットで覆われていなければ−1−1−1を出力する
入出力サンプル
入力サンプル#1:コピー
3
1 0 2 3
0 2 3 3
2 1 3 3
2 2

出力サンプル#1:コピー
3


入力サンプル#2:コピー
3
1 0 2 3
0 2 3 3
2 1 3 3
4 5

出力サンプル#2:コピー
-1

最初はこうしました
#include using namespace std; int a[100][100]; int main() {     int a,b,c,d,l,m,n;     cin>>n;     for(int i=1;i<=n;i++){         cin>>a>>b>>c>>d;         for(int j=b;j<=b+d;j++)         {             for(int k=a;k<=a+c;k++){                 a[j][k]=1;             }         }     }     cin>>l>>m;     if(a[l][m]==0)cout<     else cout<     return 0; } それからずっと间违っていて、それから闻いて、やっとaが1つの変数名で、また1つの配列名であることを発见しました(うううう、この问题は私に何时间も眠らせました。。。)
変更しました.
#include using namespace std; int sb[100][100]; int main() {     int a,b,c,d,l,m,n;     cin>>n;     for(int i=1;i<=n;i++){         cin>>a>>b>>c>>d;         for(int j=b;j<=b+d;j++)         {             for(int k=a;k<=a+c;k++){                 sb[j][k]=1;             }         }     }     cin>>l>>m;l++;m++;     if(sb[l][m]==0)cout<     else cout<     return 0; } しかし、サンプル1に対して、やはり间违いがあって、みんなに探してもらいます(作者は一时的にすべて忘れて、いいでしょう実は参考にしたので、结局うっかり1つのものを削除して、补うことができません..)