sgu101Domino
给你一些边,假设存在欧拉路径就打出来
我的代码例如以下:
#include<iostream>
#include<cstring>
using namespace std;
int dot[110],vis[110],degree[110],num_side,num_dot,no,road[110][110],st;
struct node
{
int a,b;
}side[110],step[110];
void init()
{
int i;
num_dot=no=0;
memset(degree,0,sizeof(degree));
memset(vis,0,sizeof(vis));
memset(road,0,sizeof(road));
scanf("%d",&num_side);
for(i=0;i<num_side;i++)
{
scanf("%d%d",&side[i].a,&side[i].b);
degree[side[i].a]++,degree[side[i].b]++;
road[side[i].a][side[i].b]++,road[side[i].b][side[i].a]++;
if(!vis[side[i].a])
dot[num_dot++]=side[i].a,vis[side[i].a]=1;
if(!vis[side[i].b])
dot[num_dot++]=side[i].b,vis[side[i].b]=1;
}
}
bool ispath()
{
int sum=0,i;
st=dot[0];
for(i=0;i<num_dot;i++)
if(degree[dot[i]]&1)
{
st=dot[i];
sum++;
if(sum>2)
return 0;
}
return 1;
}
void dfs(int s)
{
int i;
for(i=0;i<num_dot;i++)
if(road[s][dot[i]]>0)
{
road[s][dot[i]]--,road[dot[i]][s]--;
dfs(dot[i]);
step[no].a=s,step[no].b=dot[i],no++;
}
}
void showstep()
{
int i,j,flag;
memset(vis,0,sizeof(vis));
for(i=no-1;i>-1;i--)
for(j=0;j<num_side;j++)
if(!vis[j])
{
if(side[j].a==step[i].a&&side[j].b==step[i].b)
flag=1;
else if(side[j].a==step[i].b&&side[j].b==step[i].a)
flag=2;
else
flag=0;
if(flag!=0)
{
printf("%d %c\n",j+1,flag==1? '+':'-');
vis[j]=1;
break;
}
}
}
int main()
{
init();
if(ispath())
{
dfs(st);
if(no<num_side)
{
printf("No solution\n");
return 0;
}
showstep();
}
else
printf("No solution\n");
}
sgu101Domino的更多相关文章
随机推荐
- struts2之通配符映射
系统有n多个请求时候,不可能以一个action对应一个映射.可以用通配符映射将成百上千请求简化成一个通用映射. 通配符映射规则:1.若找到多个匹配,没有通配符的将胜出. 2.若指定的动作不存在,str ...
- python数于字符串
python数于字符串 1.了解数的类型 2.什么事字符串 3.引号的使用与区别 4.转义符 5.自然字符串 6.字符串的重复 7.子字符串 #了解数的类型 1.python中数的类型主要有五种,分为 ...
- Angular——内置服务
$location <!DOCTYPE html> <html lang="en" ng-app="App"> <head> ...
- Expectation-Maximization(EM) 算法
Expectation-Maximization 算法是统计学中用来给带隐含变量的模型做最大似然(和最大后验概率)的一种方法.EM 的应用特别广泛,经典的比如做概率密度估计用的 Gaussian Mi ...
- .ai域名注册已经极具投资价值进入火爆期
最近G.ai以六位数的天价被国内域名收藏家收入囊中,间接说明了.ai域名的价值不断攀升,自从2016年AlphaGo胜利以来,人工智能几乎成为人人谈资,而由于.com域名被挖掘待尽,一些聪明的人工智能 ...
- 使ThinkPHP(3.2.3)的分页类支持Bootstrap风格
ThinkPHP 3.2.3自带的分页类位于:/ThinkPHP/Library/Think/Pages.class.php ,官方文档在这里:ThinkPHP3.2.3数据分页 Pages.clas ...
- (独孤九剑)--MySQL入门
:[一]概论 (1)什么是 MySQL? 一种关系型开源数据库,定义了存储信息的结构. 在数据库中,存在着一些表.类似 HTML 表格,数据库表含有行.列以及单元. 在分类存储信息时,数据库非常有用. ...
- 若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet(转载)
若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet 若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet 请将 J ...
- git学习(2)----入门
一.git.github和gitlab的区别 Git诞生于2005年,大神Linus的作品,Github诞生于2008年,没有Git就没有GitHub,Github已成为全球最大的代(tong)码(x ...
- C/C++学习)22.QTcpServer、QTcpSocket、QUdpSocket使用
一.TCP/UDP通信在Qt中的实现过程: 废话不说,首先下面是Qt中TCP/UDP的实现图解: 1.Qt下TCP通信详解: 针对上图进行简单的说明: QTcpServer用来创建服务 ...