ハノイの塔の問題についてです。1~10までの数字でそれぞれ出力されるプログラムを作ります。
5のときの例です。
01234 ..... .....
.1234 ..... ....0
..234 ....1 ....0
..234 ...01 .....
...34 ...01 ....2
..034 ....1 ....2
..034 ..... ...12
...34 ..... ..012
一部ですが,表示が上記のようになるようにしたいです。
2の時ですが
01 .. ..
.1 0. ..
.. 0. .1
.. .. 01
と表示されてしまいます。
01 .. ..
.1 .0 ..
.. .0 .1
.. .. 01
これが正しい結果です。
途中過程の出力が上手くいきません。何か回答いただけると嬉しいです。コードは貼っています。よろしくお願いします。
コード#include <stdio.h> char col[3][10]; void Hanoi(int n, int a, int b, int c){ if(n>1){ Hanoi(n-1, a, c, b); } int f; f=col[a][n-1]; int d; for(d=0;d<n;d++){ col[a][d]='.'; } int e; for(e=0;e<n;e++){ col[c][e]='.'; } col[c][n-1]=f; printf("%s %s %s\n", col[0], col[1], col[2]); if(n>1){ Hanoi(n-1, b, a, c); } } int main(void){ int n; scanf("%d", &n); int i; for(i=0;i<n;i++){ col[0][i]='0'+i; col[1][i]='.'; col[2][i]='.'; } printf("%s %s %s\n", col[0], col[1], col[2]); Hanoi(n, 0, 1, 2); return 0; }
回答4件
あなたの回答
tips
プレビュー