回文序列
来源:互联网 发布:执行 catmetx.sql脚本 编辑:程序博客网 时间:2024/06/05 09:08
如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:
{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列,
{1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。
现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。
现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//利用递归,两端不论怎样都要相等或者最终合成为同一个数
#include <iostream>
using
namespace
std;
int
comb(
int
* nums,
int
head,
int
tail) {
int
times = 0;
int
left = nums[head], right = nums[tail];
while
(head < tail && left != right) {
if
(left < right) left += nums[++head], times++;
else
right += nums[--tail], times++;
}
if
(head >= tail)
return
times;
else
return
times += comb(nums, ++head, --tail);
}
int
main(){
int
n = 0;
int
nums[50] = {0};
cin >> n;
for
(
int
i = 0; i < n; i++)
cin >> nums[i];
cout << comb(nums, 0, n-1);
}
如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:
{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列,
{1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。
现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。
现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列。
{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列,
{1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。
现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。
现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列。
0 0
- 回文序列
- 回文序列
- 回文序列
- 回文序列
- 回文序列
- 回文序列
- 回文序列
- 回文序列
- 回文序列
- 回文序列
- 回文序列
- 回文序列(P1221)
- 最长回文子序列
- 最长回文子序列
- 【hihoCoder】回文字符序列
- 回文字符序列
- 回文字符序列
- 回文字符序列
- JAVA001对象导论12
- 国密SM2非对称算法与实现
- 挣扎的咸鱼
- 二进制中1的个数
- 面向对象程序设计上机练习七(类和对象)
- 回文序列
- 音频编码和解码原理
- iOS - 图片上传处理 图片压缩 图片处理
- 国密SM3杂凑算法与实现
- leveldb对skiplist的使用
- C++中this指针的用法详解
- 华硕校招面试
- EventBus的使用
- day1404基本类型包装类