C言語の問題です
5×5マスに0か1の数値が入っています。
1が入っているマスで最大の大きさになる四角形を求める問題です
例
入力
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
結果:5
入力
1 1 1 1 0
1 1 1 0 0
1 1 0 0 0
1 0 0 0 0
0 0 0 0 0
結果:6
入力
0 1 1 1 0
0 0 1 0 1
1 0 1 1 1
0 0 1 1 1
0 0 1 0 0
結果:6
このような具合です。
どうやって作ればよいのかまったく分かりません。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
#include <stdio.h>
#define W (5)
#define H (5)
//何か大いに間違えてそうなので突っ込み歓迎。
//デバッグに時間がかかってしまった。
int table[W][H] = {
{0, 1, 1, 1, 0},
{0, 0, 1, 0, 1},
{1, 1, 1, 1, 1},
{0, 1, 1, 1, 1},
{0, 0, 1, 0, 0}
};
int check(int x,int y){
int current = 0;
int jmax = H;
int pass = 0;
int i;
int j;
if (table[ x ][ y ] == 0){
return 0;
}
for (i = 0 ; ((x + i < W) && (table[ x + i ][ y ] == 1)) ; i++){
for (j = 0; y + j < H;j++){
if ((table[x + i][y + j] == 0)){
pass = 1;
if (j > jmax){
j = jmax;
}else{
jmax = j;
}
if ((i + 1) * j > current){
current = (i + 1) * j;
}
break;
}
}
if (pass == 0){
current = (i + 1) * (H - y);
}
}
return current;
}
int main(){
int max = 0;
int i;
int j;
for (i = 0;i < W; i++){
for (j = 0; j < H;j++){
int temp = check(i,j);
if (temp > max){
max = temp;
}
}
}
printf("%d",max);
return 0;
}
わざわざ作っていただけたんですね。ありがとうございます!
感激ですよ~。ただ、つい先ほど私も見てくれは悪いですが動作するものが完成しました。
タイミングが悪くて本当に申し訳ないです。このプログラムもきちんと読んで参考にさせていただきます。
No.3
- 回答日時:
すみません。
ちょっと訂正です。改めて見直したら、誤字があったり、バグがあったり、色々と効率の悪い事をしていました。
【メイン処理(開始)】
S_MAX=0
FOR X1=1~5
FOR Y1=1~5
FOR X2=X1~5 ### 修正
FOR Y2=Y1~5 ### 修正
【面積を求める処理】
IF S_MAX < S THEN
S_MAX = S
END IF
NEXT
NEXT
NEXT
NEXT
RETURN S_MAX ### 修正
【メイン処理(終了)】
【面積を求める処理(開始)】
S=0
FOR X=X1~X2
FOR Y=Y1~Y2
IF (X,Y) = 1 THEN
S=S+1
ELSE
S=0
【面積を求める処理】を抜ける
END IF
NEXT
NEXT
【面積を求める処理(終了)】
No.2
- 回答日時:
Cを知らないから考え方だけですが、私ならこうやるかな?
任意の2点を(X1,Y1),(X2,Y2)として、
それが作る四角形で最大を見つける。
【メイン処理(開始)】
S_MAX=0
FOR X1=1~5
FOR Y1=1~5
FOR X2=1~5
FOR X2=1~5
【面積を求める処理】
IF S_MAX < S THEN
S_MAX = S
END IF
NEXT
NEXT
NEXT
NEXT
RETURN S
【メイン処理(終了)】
【面積を求める処理(開始)】
S=0
FOR X=X1~X2
FOR Y=Y1~Y2
IF (X,Y) = 1 THEN
S=S+1
ELSE
S=0
【面積を求める処理】を抜ける
END IF
NEXT
NEXT
【面積を求める処理(終了)】
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Excel(エクセル) エクセルの値を元に図形の色を変えたい 2 2022/05/11 01:37
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Java java 入力された文字列を数値に置き換えて整数にし、計算をしたいです。 <を10として /を1とし 4 2022/05/16 21:08
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- 数学 問題「キッチンペーパーだけでバウムクーヘンを五等分せよ」 正解は? 5 2022/12/16 22:18
- デスクトップパソコン 認証コードが入力できない(同じ数字が次のマスにも勝手に入力される) 8 2023/01/27 12:53
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- C言語・C++・C# C#の問題で2つの整数a,bの最大公約数(GCD)を求めるユークリッドの互除法は,aをbで割った余り 2 2022/06/26 16:52
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
再起呼び出しの回数をカウント...
-
2の補数を計算するプログラム
-
迷路を脱出する経路探索プログ...
-
intとlongは同じ?
-
3のつく数と3の倍数を表示 C言語
-
C言語プログラミング 漸化式に...
-
分数の足し算をさせるプログラ...
-
デバッグビルドとリリースビル...
-
困っています
-
プログラミングの問題で分から...
-
whileとifを使い偶数を出すには
-
C言語のプログラムについて(...
-
Win32APIで作成したDLLをC#.NET...
-
画像の拡大・縮小
-
円周にアンチエイリアスをかける
-
unsigned int に0xffffffを代入...
-
C++で表を作成したいのです ...
-
Ubuntu17.10のsin関数の計算時...
-
VC++でコマンドラインから引数...
-
二分探索アルゴリズムの終了条...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
intとlongは同じ?
-
C言語で%を使わない余りの出し方
-
2の補数を計算するプログラム
-
再起呼び出しの回数をカウント...
-
画像の拡大・縮小
-
迷路を脱出する経路探索プログ...
-
分数の足し算をさせるプログラ...
-
OpenCVによる4値化について
-
3のつく数と3の倍数を表示 C言語
-
C言語で簡単なパックマンゲーム...
-
ヌメロンのプログラム
-
C++で表を作成したいのです ...
-
複数の共有メモリの作成
-
カードシャッフルのブログラム...
-
whileとifを使い偶数を出すには
-
関数とビット列
-
【C#】SQL文の中に変数を埋め込...
-
異なるn個の整数からr個の整数...
-
c言語プログラミングについて f...
-
条件が多い場合
おすすめ情報