オイラーの一筆書きについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
松浦

オイラーの一筆書きについて

#1

投稿記事 by 松浦 » 11年前

件名の通りです。
オイラーの一筆書きに関してですが、テキスト通りにやって実行結果を得ることができたのですが、いまいち理解ができません。
特に最初の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++;
}
}
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: オイラーの一筆書きについて

#2

投稿記事 by みけCAT » 11年前

とりあえず、コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: オイラーの一筆書きについて

#3

投稿記事 by softya(ソフト屋) » 11年前

同じ人の別投稿が有ったため、こちらは閉鎖します。
「オイラー・一筆書きプログラムについて • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3 ... 09#p122409
続きはこちらで。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る