件名の通りです。
オイラーの一筆書きに関してですが、テキスト通りにやって実行結果を得ることができたのですが、いまいち理解ができません。
特に最初のint a [Node+1][Node+1={...}のところと、下部のvoid visit(int i)の部分がよくわかりません。
どうかよろしくお願いいたします。
#include<stdio.h>
#define Node 4 /*Nodeを4に設定 接点の数*/
#define Root 6 /*Rootを6に設定 辺の数*/
#define Start 1 /*Startを1に設定 一筆書きの図の①から始めるということ*/
int a[Node+1][Node+1]={{0,0,0,0,0},
{0,0,1,0,1},
{0,1,0,1,2},
{0,0,1,0,1},
{0,1,2,1,0}};
int success,
v[Root+1],
n;
void visit(int);
void main(void)
{
success=0; n=Root;
visit(Start);
if(success==0) /*一度も始点に戻ってこれなかった場合*/
printf("解なし\n");
}
void visit(int i)
{
int j;
v[n]=i;
if(n==0 && i==Start){
printf("解 %d:",++success);
for(i=0;i<=Root;i++)
printf("%d",v);
printf("\n");
}
else {
for(j=1;j<=Node;j++)
if(a[j]!=0){
a[j]--;
a[j]--;
n--;
visit(j);
a[j]++;
a[j]++;
n++;
}
}
}
オイラーの一筆書きについて
Re: オイラーの一筆書きについて
とりあえず、コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。
かつ適切なインデントをしていただけると、見やすくて助かります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: オイラーの一筆書きについて
同じ人の別投稿が有ったため、こちらは閉鎖します。
「オイラー・一筆書きプログラムについて • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3 ... 09#p122409
続きはこちらで。
「オイラー・一筆書きプログラムについて • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3 ... 09#p122409
続きはこちらで。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。