世界各国治安排行榜:高分征道C语言的难题答案,非诚勿进

来源:百度文库 编辑:高考问答 时间:2024/05/06 14:43:22
一道比较难的题目,想了好久也只想了个大概的过程,还请高手帮下
不多说了,我把题目内容大概说下吧

题目:如何判断一个图形能否用一笔画出,如果可以的话,路径是怎么样的。可以把每个接点编上号码,然后输出路径。

能把所有的情况写出来最好,实在不行的话,只把一条路径写出也行。
我现在只想出写出一条路径的大概思路,程序还没有写,怕是还有很多漏洞。所以请大家帮帮忙。

能给出答案或有效建议的我会追加分数的,非常感谢
to wangtk1982
这道题目难点不在判断能否一笔画出,而是输出路径
图形输入可以采用矩阵,两点相连显示1,不连显示0

另外,现在由于某种原因,我现在无法登陆QQ,可以和我邮箱联系time405@163.com,或者明天我加你QQ也行,希望你能在线

to dixnuits
不好意思,你所说的名词我不太了解

谢谢大家了,可能这道题目对你们来说,可能真的不太难,可对我来说已经是很难了的,特别是在还没学数据结构的前提下。谢谢大家的提示了,我再去想想,有什么不懂的再请教大家了

/*通过gcc编译,只对图扫描一次,得出欧拉路径
有什么问题发消息给我就行了*/
#include <stdio.h>
#include <mem.h>
#define MAXL 1000

int map[MAXL][MAXL],N;
int stack[MAXL],top;

int path(int v)
{
int w=0;
int haveV;
int i;

while(1)
{
haveV=0;
for(i=0;i<N;++i) if(map[v][i])
{
w = i;
haveV=1;
stack[++top]=v;

map[v][w]=0;
map[w][v]=0;
break;
}
if(haveV==0) break;
v=w;
}
return v;
}
void pathEshow(int v)
{
printf("%d", v);
top=-1;
while ((path(v) == v) && top!=-1)
{
v = stack[top--];
printf("-%d", v);
}
printf("\n");
}

int main()
{
int v,w,M;
memset(map,0,sizeof(map));
scanf("%d%d",&N,&M);
/*N为顶点个数,M为边数
如果输入顶点数为7,则顶点编号为0到6*/
while(M--)
{
/*依次输入M条边*/
scanf("%d%d",&v,&w);
map[w][v]=1;
map[v][w]=1;
}
pathEshow(0);
scanf("%d",&v);
return 0;
/*
样例输入:
7
10
0 1
0 2
0 5
0 6
1 2
2 3
2 4
3 4
4 5
4 6
输出:
0-6-4-2-3-4-5-0-2-1-0
*/
}

一笔能画出的图形在于所有节点连接数为奇数的点不能多于2个

路径总是从奇数点开始的!不知道你要判断的图形是怎么输入?什么格式?

详细可联系 87544653

========================================================

如果只找一条的化很简单,一笔画图形随便沿着那条线都是可以完成的!所以可以复制表,然后的规调用可能性,将走过的点设置flag,肯定可以走出一条。
全部只能用树了吧.......

建议你买一本数据结构(C语言版)的书,推荐清华大学严蔚敏版的,重点看看图那一章,还有主要算法上面的几位老兄都已经说的比较详细了

很简单的图论问题:欧拉回路,哈密尔顿回路,看看就知道了

可以用图的遍历