検索結果 12 件

by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウト
返信数: 1
閲覧数: 1336

ライツアウト

ライツアウトに関する質問です.
N×N行列において,解なしの問題がある理由がわかりません.
教えていただけますか?
あと,ライツアウトというものは一対一対応なのか?という質問はどう思いますか?
よろしくお願いします.
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

すべてのプログラムが完成しました。
プログラムは、ランダム関数を用いてそれを配列にいれ問題を生成しました。
また、一問を解く時間を計る関数もいれて時間も計測しています。
しかし、次の3つも問題が起こりました。
1.解なしの問題が存在すること
2.N×N行列のライツアウトに関してN=9,11,14,16のとき解ありの問題がほとんど作成できない。
  また、一問解く時間が他のと比べ極端に時間が短い
3.Nが19の時、解ありの問題がまったく作成できない。

この3つの問題が発生しました。
まったく理由がわかりません。
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

全通りやったが答えがでないみたいな答えになります。
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

そうですね。 すぐやってみます
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

作ったプログラムはこちらです。 #include<stdio.h> #define N 5 #define M 5 int p[N+2][M+2]; int q[N+2][M+2]; void hanten(int i,int j); int solve(int n,int m); int main(void){ int i,j,ii,jj; int a,n,m,x,y,z,zz; int pro[16]={0,1, 0,2, 1,1, 1,2, 2,0, 2,3, 3,2, 4,3, 4,5, 5,3, 5,5 }; int check[M]; n=N+2; m=M+2; //syokiti...
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

みなさんの意見を参考にし、プログラムをすべて書き直しました。
ビット演算についても理解でき、今までにないプログラムを作成することができました。
本当にありがとうございました。
つぎに、あらゆる問題で試してみたいのですが、できない問題というものは存在するのでしょうか?
そこがわからず乱数を用いて問題を作成するか迷っています。
よろしくお願いします。
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

ご返信ありがとうございます。
(1)の2^3で8になることは理解できました。
そして、(2)の上下左右の反転はプログラムできると思います。
あとは、その再帰のプログラムを作るのが少し難しい状態です。
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

ビット演算の理解はとても難しいと思います。
それで、解法は確定総当り戦略(2^N回)を用いて書いています。
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

返信ありがとうございます。
配列も特に理解していない状態から始めたため、その考えは思いつきませんでした。
3*3の配列を[4][4]で定義してやってみようと思います。
ありがとうございます。
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

申し訳ありません、かなり不慣れなもので間違えてしまいました。

これは、問題を与えて解くプログラムです。
最終的には解く時間を図れるようなプログラムを作成したいと考えています。
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

Re: ライツアウトのC言語プログラム

伝説なるハッカーさん、返信ありがとうございます。
http://www.algopro.co.jp/sflguide/sfl_g2/index.html
上記のURLのページを参考に作っています。
ルールもそちらにわかりやすく書いてあります。
よろしくお願いします。
by epson14
13年前
フォーラム: C言語何でも質問掲示板
トピック: ライツアウトのC言語プログラム
返信数: 26
閲覧数: 11047

ライツアウトのC言語プログラム

ライツアウトのプログラムをCで書いています。 現在3*3で作成してみました。 アルゴリズムは多重ループ探索を用いようと考えています。 しかし、左上が1の場合と中上が1の場合など二つの場合分けの if文が同時動きません。 どうしたらよいのでしょうか? よろしくお願いします。 #include<stdio.h> int p[3][3]; int main(void){ int i,j; for(j=0;j<3;j++){ for(i=0;i<3;i++){ p[j][i]=0; } } //配列 // [0][0] [0][1] [0][2] // [1][0] [1][1] [1][2] // ...

詳細検索ページへ移動する