第10講 魔方陣自動生成アプリ
第2話 生成を途中でやめさせる
それでは、9次順列などを2次元に並べるアプリ
n=4
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16
01 02 03 04
05 06 07 08
09 10 11 12
13 14 16 15
01 02 03 04
05 06 07 08
09 10 11 12
13 15 14 16
01 02 03 04
05 06 07 08
09 10 11 12
13 15 16 14
01 02 03 04
05 06 07 08
09 10 11 12
13 16 14 15
01 02 03 04
05 06 07 08
09 10 11 12
13 16 15 14
01 02 03 04
05 06 07 08
09 10 11 12
14 13 15 16
01 02 03 04
05 06 07 08
09 10 11 12
14 13 16 15
01 02 03 04
05 06 07 08
09 10 11 12
14 15 13 16
01 02 03 04
05 06 07 08
09 10 11 12
14 15 16 13
生成された2次元4次順列総数=10
n=3
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 9 8
1 2 3
4 5 6
8 7 9
1 2 3
4 5 6
8 9 7
1 2 3
4 5 6
9 7 8
1 2 3
4 5 6
9 8 7
1 2 3
4 5 7
6 8 9
1 2 3
4 5 7
6 9 8
1 2 3
4 5 7
8 6 9
1 2 3
4 5 7
8 9 6
生成された2次元3次順列総数=10
作っていきたいと思います。
2次元4次順列としていますが、
4次順列を2次元に並べたものをこう表すことにします。
ただし、総数が多いですからカウンタcnが10になったら、
強制的に止めるようにすることにしましょう。
第9講第11話のプログラムを10個出来た段階でやめさせるには、
void f(int g){
int i,j,h;
for(i=0;i<n;i++){
x[g]=i+1;
h=1;
if(g>0){
for(j=0;j<g;j++){
if(x[g]==x[j]){
h=0;
break;
}
}
}
if(h==1){
if(g+1<n){
f(g+1);
if(cn==10)return;
}
else{
cn++;
hy();
if(cn==10)return;
}
}
}
}
とピンクの部分を加えます。
では、皆さん第9講第11話のプログラム添付ファイル
を改良して、2次元に並べるアプリを実現しましょう。
ただし、
for(i=0;i<n;i++){
と
if(g+1<n){
の2文は当然変更が必要ですし、
void hy(){
int i;
for(i=0;i<n;i++){
printf("%d ",x[i]);
}
printf("\n");
}
も2次元ループに変えなければなりませんよ。
第1話へ 第3話へ
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ