“哈密尔顿回路问题”是访问除原出发结点以外的每个结点一次且仅一次,而“欧拉回路问题”是访问每条边一次且仅一次
PS:已经判断此图有欧拉路或欧拉回路
#include<iostream> using namespace std; int g[101][101]; int du[101]; int lu[101]; int n,e,l,start,x,y; int maxn,minn=99999; int find(int i) { for(int j=1;j<=n;j++) { if(g[i][j]==1) { g[i][j]=0;//删除边 避免走第二次 g[j][i]=0;//如果有重边改为-- find(j); } } lu[++l]=i;//记录路径 } int main() { cin>>n>>e; for(int i=1;i<=e;i++) { cin>>x>>y; g[x][y]=1;//如果有重边改为++ g[y][x]=1; du[x]++; du[y]++; maxn=max(maxn,max(x,y));//点编号的最大值 minn=min(minn,min(x,y));//点编号的最小值 } start=1; for(int i=1;i<=n;i++) if(du[i]%2==1)//判断如果有奇点从奇点开始 start=i; find(start); for(int i=l;i>=1;i--) cout<<lu[i]; }转载于:https://www.cnblogs.com/BrokenString/p/9279541.html