ADV数字的剪切
- #include <iostream>
- using namespace std;
- #define SIZE 9
- #define MAXLEN 6
- int data[SIZE][MAXLEN];
- int numberLen[SIZE];
- int overlapLen[SIZE+1][SIZE+1];
- void IToA(int N ,int row) //数字转换为数组
- {
- int tmp=N;
- int i=0;
- while(tmp)
- {
- i++;
- tmp/=10;
- }
- numberLen[row]=i;
- tmp=N;
- for(int j=i-1;j>=0;j--)
- {
- data[row][j]=tmp%10;
- tmp/=10;
- }
- }
- void getOverlapLen(int i,int j) //计算两个数字的最小重叠长度
- {
- for(int len=1;len<=numberLen[i]&&len<=numberLen[j];len++)
- {
- int match=1;
- for(int m=numberLen[i]-len,n=0;m<numberLen[i]&&n<numberLen[j];m++,n++)
- {
- if(data[i][m]!=data[j][n])
- {
- match=0;
- break;
- }
- }
- if(match)
- {
- overlapLen[i][j]=len;
- break;
- }
- }
- }
- int maxLen=0;
- int used[SIZE];
- void getMaxLen(int step ,int numbers,int curlen,int remainingLen,int preNumber)
- {
- if(step==numbers)
- return ;
- if(curlen+remainingLen-numbers+step+1<=maxLen)
- return;
- for(int i=0;i<numbers;i++)
- {
- if(!used[i])
- {
- used[i]=1;
- int tmpLen=curlen;
- if(overlapLen[i][preNumber]==0&&step!=0) //连接成功
- {
- used[i]=0;
- continue;
- }
- curlen+=numberLen[i]-overlapLen[i][preNumber];
- if(maxLen<curlen)
- maxLen=curlen;
- getMaxLen(step+1,numbers,curlen,remainingLen-numberLen[i],i);
- used[i]=0;
- curlen=tmpLen;
- }
- }
- }
- void main()
- {
- //freopen("in.txt","r",stdin);
- int nTc;
- cin>>nTc;
- for(int tc=0;tc<nTc;tc++)
- {
- int N;
- cin>>N;
- maxLen=0;
- for(int i=0;i<N;i++)
- {
- used[i]=0;
- for(int j=0;j<N;j++)
- {
- data[i][j]=0;
- overlapLen[i][j]=0;
- }
- }
- int temp;
- int totalLen=0;
- for(int i=0;i<N;i++)
- {
- cin>>temp;
- IToA(temp,i);
- totalLen+=numberLen[i];
- }
- for(int i=0;i<N;i++)
- {
- for(int j=0;j<N;j++)
- {
- if(i!=j)
- getOverlapLen(i,j);
- }
- }
- getMaxLen(0,N,0,totalLen,SIZE);
- cout<<maxLen<<endl;
- }
- }
ADV数字的剪切的更多相关文章
- vim基本命令之剪切复制粘贴替换
首先是剪切(删除): 剪切其实也就顺带删除了所选择的内容,所以既可以当剪切命令用,也可以当删除命令使用. 1 首先,可以在命令模式下输入v进入自由选取模式,选择需要剪切的文字后,按下d就可以进行剪切了 ...
- vim命令的妙用
进来看到了一篇博文,讲述的是无插件Vim编程技巧,然后看到里面还有一些其余的关于vim的博文,感觉值得收藏:酷 壳 – CoolShell.cn 这里挑选出其中一篇,这也是自己已经学习过的: 无插件V ...
- 无插件Vim编程技巧
无插件Vim编程技巧 http://bbs.byr.cn/#!article/buptAUTA/59钻风 2014-03-24 09:43:46 发表于:vim 相信大家看过<简明Vim教程& ...
- vim复制
关于vim复制剪贴粘贴命令的总结 最近在使用vim,感觉很好很强大,但是在使用复制剪切粘贴命令是,碰到了一些小困惑,网上找了一些资料感觉很不全,讲的也不好,遂自己进行实践并总结了. 首先是剪切(删 ...
- 无插件VIM编程技巧(网摘)
无插件VIM编程技巧 原文出处:[陈皓 coolshell] 相信大家看过<简明Vim教程>也玩了<Vim大冒险>的游戏了,相信大家对Vim都有一个好的入门了.我在这里把我日常 ...
- vim编辑
vim 重点在于光标的移动,模式的切换,删除,查找,替换,复制,黏贴,撤销命令的使用 vim的三种模式:命令模式(打开文件默认进入此模式)编辑模式(输入模式)末行模式(按:键进入,只能从命令模式下按键 ...
- vim 命令补充(1)
本篇文章主要教你如何使用 Vim 分屏功能. 分屏启动Vim 使用大写的O参数来垂直分屏. vim -On file1 file2 ... 使用小写的o参数来水平分屏. vim -on file1 f ...
- vi 使用小结
复制 1,ny 从哪行到哪行的复制,中间用逗号隔开,然后命令y. 黏贴 是在命令模式下直接按p即可 跳到n行: 命令模式直接输入数字即可 剪切:d命令 删除:x命令 跳到行首行尾:直接home或end ...
- liunx基础命令
linux的简单介绍 linux是一款免费使用和自由传播的内似于unix的操作系统软件,是一个基于POSI和unix的多用户,多任务,支持多线程和多CPU的一种操作系统.主要用于服务器,特别是网络服务 ...
随机推荐
- HBase的伪分布式安装(原创)
准备工作: 1)安装了伪分布式hadoop:参照http://blog.csdn.net/zolalad/article/details/11472207 2)修改已安装好的hadoop配置文件: a ...
- Java命令
java -classpath, 设定要搜索的类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有的CLASSPATH的设定. 由于所要执行的类也是要搜索的类的一部分, ...
- Android异常:唤醒锁未授权。(Caused by: java.lang.SecurityException: Neither user 10044 nor current process has android.permission.WAKE_LOCK.)
Android异常:Caused by: java.lang.SecurityException: Neither user 10044 nor current process has android ...
- linux系统PXE+Kickstart自动安装系统
一.PXEPXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 ...
- mysql系统数据库
mysql系统数据库主要存储了一些存储MySQL服务的系统信息表.一般情况下mysql库的表都是MYASIM引擎,除非个别情况.mysql库的表的作用大致可以分为以下几类: (1)授权系统表 (2)系 ...
- No permission to write APN settings: Neither user *** nor current process has android.permission.WRITE_APN_SETTINGS.
在ICS40以前的版本中,如果程序需要设置APN,只需要在AndroidManifest文件中声明这个权限即可.在40的机器上运行则会抛出以下异常:java.lang.SecurityExceptio ...
- MFC 给对话框注册热键
在头文件中添加: //}}AFX_MSGafx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);//(此行为加入的)BEGIN_MESSAGE_MA ...
- WinForm中WebBrowser的使用
最近由于工作需要,研究了下Winform的WebBrowser控件,在这里给大家分享下. 1.WebBrowser导航 WebBrowser在进行导航的时候需要用到Navigate(string ur ...
- MIME Type
一.首先,我们要了解浏览器是如何处理内容的.在浏览器中显示的内容有 HTML.有 XML.有 GIF.还有 Flash --那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME ...
- 国内npm镜像源推荐及使用
NPM(Node Package Manager),是NodeJs的模块依赖管理工具.由于Npm源在国外,使用起来不方便, 故需要国内可靠的npm源可以使用,现整理如下: 一.国内镜像 1.淘宝NPM ...