解题报告 百进制数

题目 4. 百进制数 (hex.pas/c/cpp) 【问题描述】 科学进步飞快,日新月异,人们早已经不再习惯十进制那种单调的表示数字的方式。最近,Y同学投入百进制数的研究中。两个百进制数可以相邻当且仅当前一个百进制数的最后一位和后一个百进制数的第一位相同,这一位数字称之为一个交点,每一位数字最多能以起点和终点的角色属于交点一次(例如1234—3434—3412,是非法序列,因为34以起点和终点的角色充当交点各两次)。任意一个百进制数或多个可以相邻的百进制数可以形成一个合法序列。一个完美序列满足序列中所有的百进制数长度之和是所有合法序列中最大的。给出n个百进制数,我们希望将其排列才能组成最长的百进制数完美序列。 【输入格式】 第一行一个数n表示百进制数的个数; 第二行到第n-1行每行一个长度为L的百进制数。 【输出格式】 输出完美序列的长度。 【输入样例】 5 1234 347891 1291 9988 9156 【输出样例】 14 【数据范围】 20%的数据:1<=n<=10, 1<=L<=10; 80%的数据:1<=n<=50, 1<=L<=100; 100%的数据:1<=n<=100,1<=L<=100; 算法 可以搜索,深搜,或使用图论。 搜索的时候,只需要注意搜的数字串不要重复,节点不要重复,然后,百进制数一定是两位算一位的,不用枚举是一位算一位的情况。 或使用图论,以开头或结尾的两位作为节点,数字串作为边连边,然后求最长路。 注意事项 注意百进制数两位算一位的。 代码 Dfs (WYH) program hex; type integer=longint; var clist:array[0..100005] of record f,t,l:integer; end; p:array[0..105] of integer; vis,viss:array[0..105] of boolean; node:array[0..105] of record st,en,len:integer; end; n,count,ans:integer; procedure init; var i,j,l,temp:integer; s:string; begin count:=0; ans:=0; fillchar(clist,sizeof(clist),0); fillchar(p,sizeof(p),0); fillchar(vis,sizeof(vis),0); fillchar(node,sizeof(node),0); readln(n); for i:=1 to n do begin readln(s); l:=length(s); node[i].len:=l; if l<=2 then begin val(s,temp); node[i].st:=temp; node[i].en:=temp; end else begin val(copy(s,l-1,2),temp); node[i].en:=temp; if l mod 2=0 then begin val(copy(s,1,2),temp); node[i].st:=temp; end else begin val(copy(s,1,1),temp); node[i].st:=temp; end; end; end; end; procedure add(ff,tt:integer); begin inc(count); clist[count].f:=ff; clist[count].t:=tt; clist[count].l:=p[ff]; p[ff]:=count; end; procedure makepicture; var i,j:integer; begin for i:=1 to n do for j:=1 to n do if i<>j then if node[i].en=node[j].st then add(i,j); end; procedure dfs(x,long:integer); var i,j,cc,tt:integer; begin if long>ans then ans:=long; cc:=p[x]; while cc<>0 do begin tt:=clist[cc].t; if (not vis[tt]) and (not viss[node[tt].st]) then begin vis[tt]:=true; viss[node[tt].st]:=true; dfs(tt,long+node[tt].len); vis[tt]:=false; viss[node[tt].st]:=false; end; cc:=clist[cc].l; end; vis[x]:=false; end; procedure main; var i,j:integer; begin for i:=1 to n do begin fillchar(vis,sizeof(vis),0); fillchar(viss,sizeof(viss),0); vis[i]:=true; dfs(i,node[i].len); end; writeln(ans); end; begin assign(input,'hex.in');reset(input); assign(output,'hex.out');rewrite(output); init; makepicture; main; close(input); close(output); End. 图论 (LYF) var d1,d2:array[0..100] of longint; a:array[0..100,0..100] of longint; s:string; ans,l,r,len,n,i,j,k:longint; st:string; begin assign(input,'hex.in'); reset(input); assign(output,'hex.out'); rewrite(output); readln(n); for i:=1 to n do begin readln(s); len:=length(s); st:=copy(s,len-1,2); val(st,k); if odd(len) then s:='0'+s; st:=copy(s,1,2); val(st,j); if j=k then begin if len>d1[j] then begin d2[j]:=d1[j]; d1[j]:=len; end else if len>d2[j] then begin d2[j]:=len; end; continue; end; if len>a[j,k] then a[j,k]:=len; end; for i:=0 to 99 do if d2[i]<>0 then if ans<d1[i]+d2[i] then ans:=d1[i]+d2[i]; for k:=0 to 99 do for i:=0 to 99 do if (i<>k)and(a[i,k]>0) then for j:=0 to 99 do if (i<>j)and(j<>k)and(a[k,j]>0)and(a[j,k]=0) then if a[i,j]<a[i,k]+a[k,j] then a[i,j]:=a[i,k]+a[k,j]; l:=maxlongint; for i:=1 to 99 do for j:=1 to 99 do if a[i,j]>ans then begin ans:=a[i,j]; l:=i; r:=j; end; if (l<>maxlongint)and(l<>r) then writeln(d1[l]+ans+d1[r]) else writeln(ans); close(input); close(output); end.

转载于:https://www.cnblogs.com/SueMiller/archive/2011/10/15/2213688.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 遗传算法 agv_基于改进遗传算法的AGV路径规划

基于改进遗传算法的AGV路径规划苑光明&#xff0c;翟云飞&#xff0c;丁承君&#xff0c;张鹏【摘要】&#xff3b;摘要&#xff3d;针对AGV在自动化生产线中原有路径规划算法存在路径拐弯次数多&#xff0c;不利于AGV自动控制的问题&#xff0c;提出了一种改进遗传算法。为提高…

CSDN博客图片水印|自定义水印|去除水印

参考博文1&#xff1a;https://blog.csdn.net/stereohomology/article/details/54561782 参考博文2&#xff1a;https://blog.csdn.net/u011479200/article/details/81026798 CSDN改版后&#xff0c;原来的修改方法不行了~~ 在 CSDN 中&#xff0c;上传图片时&#xff0c;会默…

win2003 定时重启BAT

echo offat 2:00 /every:M,T,W,Th,F,S,Su %windir%\system32\shutdown.exe /recho 设置完成&#xff0c;请按任意键退出……pause>nul 运行后计划任务中会新增一个JOB 很简单的&#xff0c;记录一下免得忘记 转载于:https://www.cnblogs.com/relax/archive/2011/10/18/22160…

【算法设计与分析】02 货郎问题与计算复杂性理论

什么是NP系列问题&#xff1f;今天来看看这些问题。 文章目录1 货郎问题2 0-1背包问题3 什么是NP-hard问题&#xff08;NP难问题&#xff09;1 货郎问题 问题&#xff1a;有n个城市&#xff0c;已知任何两个城市之间的距离&#xff0c;求一条每个城市恰好经过1次的回路&#xf…

ad17编辑界面怎么检查未连线_软件账务处理流程之——凭证审核与检查

金蝶是我们财务人非常熟悉的财务软件&#xff0c;但是我们很多财务人只在应用软件的时候还是会出现很多的问题&#xff0c;为了帮助大家更好地应用这个软件&#xff0c;今天就来和大家讲讲关于金蝶软件凭证审核与检查的一些基本处理流程。凭证审核凭证输入完成后&#xff0c;更…

快速可扩展的Ajax流代理——提供持续下载跨域数据

简介 由于浏览器禁止跨域的XMLHTTP调用&#xff0c;所有的Ajax网站都必须有一个服务端代理来从外部域比如Flickr或者Digg来抓去内容。对客户端Javascript代码来说&#xff0c;一个XMLHttp的调用将请求传递给宿主在相同域里的服务端代理&#xff0c;然后由代理来从外部服务器上下…

Markdown编辑器 公式指导手册

#Cmd Markdown 公式指导手册 标签&#xff1a; Tutorial 2018-03-20 补档&#xff1a; 收到很多小伙伴对本文的源文档转载需求&#xff0c;故传了一份 md 文件&#xff0c;请按需 下载 。 本文固定链接: https://www.zybuluo.com/codeep/note/163962 点击跳转至 Cmd Markdown …

python建db文件_临时数据库之python用sqlite3模块操作sqlite

SQLite是一个包含在C库中的轻量级数据库。它并不需要独立的维护进程&#xff0c;并且允许使用非标准变体(nonstandard variant)的SQL查询语句来访问数据库。一些应用可是使用SQLite保存内部数据。它也可以在构建应用原型的时候使用&#xff0c;以便于以后转移到更大型的数据库。…

MDX as的使用

用到as的时候&#xff0c;如果用到了某个纬度&#xff0c;例如&#xff1a;withmember mydate as now()member [告警投诉数量a] as lookupcube("[ALARM_RECORD]","[Measures].[告警投诉数量]") member [故障总量啊] as lookupcube("[EOMS_FAULT_RECO…

【算法设计与分析】03 算法及其时间复杂度

在学习算法的时间复杂度之前&#xff0c;需要了解下面5条概念 什么是算法的时间复杂度&#xff1f; 针对指定基本运算&#xff0c;计数算法所做的运算次数。什么是基本运算&#xff1f;比较、加法、乘法、置指针、交换…什么是输入规模&#xff1f;输入串的编码长度&#xff0c…

用单片机测量流体流速的_影响超声波流量计(热量表)测量精度的主要因素

1、上下游直管段的影响由于时差式超声波流量计标定系数K值是雷诺数函数&#xff0c;所以当流体从层流过渡到紊流时&#xff0c;其流速分布不均匀&#xff0c;标定系数K值将产生较大的变化&#xff0c;从而影响测量准确度。根据设计要求换能器应安装在上游直管段为10倍管径、下游…

【算法设计与分析】04 函数的渐进的界

今天学习函数的渐进的界&#xff0c;会涉及多种数学符号。对以后学习分析算法复杂度有很大的帮助。 1 大OOO符号 定义&#xff1a; 设 f 和 g是定义域为自然数集N上的函数. 若存在正数 c 和 n0&#xff0c; 使得 对一切 n ≥\geq≥ n0有: c≤f(n)≤cg(n)c\leq f(n) \leq cg(n…

11月10日 14:00~16:00 上海敏捷开发沙龙

主题&#xff1a;火星人陈勇将赴上海主办线下沙龙&#xff0c;主题是“自组织团队与松结对编程”&#xff08;2011 微软 TechED演讲主题&#xff09;&#xff0c;演讲后有团队问答PK活动。日期&#xff1a;2011年11月10日时间&#xff1a;下午14&#xff1a;00&#xff5e;16&a…

c语言头文件和源文件_C语言头文件防卫式声明

C语言一般提供三种预处理功能&#xff1a;宏处理、文件包含、条件编译。头文件防卫式申明中会用到条件编译中 #ifndef、#define、#endif 的用法。所以&#xff0c;首先价绍下条件编译。1 条件编译一般情况下&#xff0c;在生成可执行文件的过程中&#xff0c;源程序文件中的所有…

tomcat原理,一个客户端请求的处理过程

假设来自客户的请求为&#xff1a;http://localhost:8080/wsota/wsota_index.jsp1) 请求被发送到本机端口8080&#xff0c;被在那里侦听的Coyote HTTP/1.1 Connector获得2) Connector把该请求交给它所在的Service的Engine来处理&#xff0c;并等待来自Engine的回应3) Engine获得…

python定义函数需要保留字def_定义函数时要用到哪一个python保留字?_学小易找答案...

【简答题】常见的足部畸形有哪些?例举6种以上。【其它】请将会计学小册子第四章完成情况(选择判断业务题2. 6.)的所有内容拍照上传嗷【其它】以小组为单位进行现场调研,对足球场外的广场区域植物造景进行统计,每个同学利用CAD软件对该场地进行绘图,掌握园林中自然式绿地的植物…

aop编程时出现错误信息:java.lang.NoClassDefFoundError

代码错误信息&#xff1a; org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘calImpl’ defined in file [/Users/lyy0217/Downloads/SSM/target/classes/com/cm/service/aop/CalImpl.class]: BeanPostProcessor before instantiat…

Firebug控制台详解

作者&#xff1a; 阮一峰 日期&#xff1a; 2011年3月26日 Firebug是网页开发的利器&#xff0c;能够极大地提升工作效率。 但是&#xff0c;它不太容易上手。我曾经翻译过一篇《Firebug入门指南》&#xff0c;介绍了一些基本用法。今天&#xff0c;继续介绍它的高级用法。 Fi…

标签 href 怎么拼接_【微信】用户-标签的兴趣建模

这一篇分享的是CIKM2020微信的learning to build user-tag profile&#xff0c;主要介绍了微信看一看&#xff08;"Top Stories"&#xff09;中&#xff0c;如何进行用户-标签的兴趣建模&#xff0c;提升推荐效果。1、背景看一下微信看一看场景下的推荐流程&#xff…