1) 駒の位置を(列,行)と表すとき,(i,j)と(i’,j’)の位置に置かれた2つの駒が互いに斜めの利き筋に入っているかどうかを判定するための条件を考える
(2) 上の条件をプログラムで記述し,すべての駒の組が利き筋に入っていない場合にそのときの置き方を表す順列を表示したい(下記のプログラムの赤字の部分を変更する)。
(3) 出力方法を工夫して結果を分かりやすく表示するプログラムを作成したい。
この条件のプログラムを満たしたプログラムに修正お願いします
(参考)0~nのn+1個の数を全部使ってできる順列をすべて生成するプログラム
#include <stdio.h>
#include <math.h>
int a[ 10 ]; // 順列を格納する配列(最大0~9の順列を格納できる)
int cnt = 0; // 順列の個数
// k番目からn番目までの順列を生成
void perm( int k, int n )
{
int i, j, l;
for( i = 0; i <= n; i++ ){ // k番目の候補
for( j = 0; j < k; j++ ){ // k-1番目までに候補と等しいものがあるか
if( a[ j ] == i ){ // あればこの先を調べる必要はない
break;
}
}
if( j == k ){ // k-1番目までに候補と等しいものがなかった場合
a[ k ] = i; // k番目をその候補で決定
if( k < n ){ // kがn未満ならばk+1番目からn番目の順列を生成
perm( k + 1, n );
}
else{ // それ以外(kとnが等しいとき)は順列が1つ完成で出力
printf( "%6d : ", ++cnt );/*赤文字部
for( l = 0; l <= n; l++ ){
printf( "%d ", a[ l ] );
}
printf( "\n" );*/
}
}
}
}
int main()
{
int n;
printf( "0~nからなる順列をすべて列挙します。\n" );
printf( "nを入力してください:" );
scanf( "%d", &n );
perm( 0, n ); // 0番目からn番目の順列を生成する
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
(1) 二つの座標を通る線の傾きが1または-1ならば、利き筋にはいっている
2つの座標を引数にして、1(入っている)または0(入っていない)を返す関数をつくる
(傾きはどうやって計算するのか? math.hの関数を使用する)
(2) 配列a[0] ~ a[n]までの各座標(i, a[i])の全て組み合わせを(1)の関数でチェックして
一つでも利き筋に入っていれば1, そうでなければ0を返す関数をつくる
(forの二重ループ, if, breakを使用)
関数permの赤字部分を、作成した関数の返り値が0なら表示するように変更する
(3) 「結果を分かりやすく表示」とはどういうことなのか不明なので回答不能
課題の丸投げはまともな回答がつきません。
考え方を示したのでご自身でプログラムしてみて下さい。
提示されている関数permの内容が理解できているレベルであれば、簡単なはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 10人分の生徒の英語の点数{32,34,41,38,40,26,14,46,42,50} と数学の点 2 2022/05/26 21:31
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3のつく数と3の倍数を表示 C言語
-
課題;素因数分解
-
C言語でサイコロのプログラムを...
-
2の補数を計算するプログラム
-
2次関数プログラムを描写する...
-
OpenGLの惑星プログラム
-
intとlongは同じ?
-
再起呼び出しの回数をカウント...
-
OpenCVでのメモリエラーについて
-
二分探索アルゴリズムの終了条...
-
| (or) を使った関数の引数の作...
-
異なるn個の整数からr個の整数...
-
C言語 格子点が多角形の中にあ...
-
乱数生成について
-
クリックされた地点が2点の線分...
-
C言語で簡単なパックマンゲーム...
-
#define _CRT_SECURE_NO_WARNIN...
-
【C++】関数ポインタの使い方
-
プログラミングで二番目に大き...
-
プログラムでの数字につく”f”の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
intとlongは同じ?
-
C言語で%を使わない余りの出し方
-
2の補数を計算するプログラム
-
再起呼び出しの回数をカウント...
-
画像の拡大・縮小
-
迷路を脱出する経路探索プログ...
-
分数の足し算をさせるプログラ...
-
OpenCVによる4値化について
-
3のつく数と3の倍数を表示 C言語
-
C言語で簡単なパックマンゲーム...
-
C++で表を作成したいのです ...
-
ヌメロンのプログラム
-
カードシャッフルのブログラム...
-
複数の共有メモリの作成
-
whileとifを使い偶数を出すには
-
関数とビット列
-
異なるn個の整数からr個の整数...
-
条件が多い場合
-
c言語プログラミングについて f...
-
【C#】SQL文の中に変数を埋め込...
おすすめ情報