构造回文数操作_网易编程
来源:互联网 发布:spring java应用 编辑:程序博客网 时间:2024/06/09 19:00
如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:
{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} 不是回文序列。
现在给出一个数字序列,允许使用一种转换操作:
选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和)。
现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列。
输入描述:
输入为两行,第一行为序列长度n ( 1 ≤ n ≤ 50)第二行为序列中的n个整数item[i] (1 ≤ iteam[i] ≤ 1000),以空格分隔。
输出描述:
输出一个数,表示最少需要的转换次数
输入例子:
41 1 1 3
输出例子:
2
思路:每次只考虑数列的首尾即可,序列用(a0,a1,,,an-1)表示,如果首尾相等那么就是对(a1,a2,,,,an-2)在进行判断。首尾不等的时候有两种情况,首部小,那么就将首部的临近两个相加,操作数加一,并对(a2,a3,,,an-1)在进行判断;尾部小,那么将尾部的两个元素相加,操作数加一,并对(a1,a2,,,,an-2)进行判断。
int GetCnt(int *arr, int len){int front = 0;//数组之首int end = len - 1;//数组尾int count = 0;//对比数组首尾,如果相等那么就去掉队首队尾while (front < end){if (arr[front] < arr[end]){arr[front + 1] += arr[front];front++;count++;}else if (arr[front]>arr[end]){arr[end - 1] += arr[end];end--;count++;}else{front++;end--;}}return count;}
0 0
- 构造回文数操作_网易编程
- 构造回文_腾讯实习生编程题
- 网易笔试在线编程_ 操作序列
- 网易校园招聘2017编程题--回文数问题
- 牛客网解题-在线编程-2017网易有道_构造队列
- 回文质数 构造回文数
- 回文数(网易笔试)
- 3.4_回文数
- 网易笔试编程-统计回文
- [编程题] 构造回文
- [编程题]构造回文
- 跳石板_网易编程
- 买苹果_网易编程
- 腾讯编程题:构造回文
- Java编程之回文数
- 网易编程题--操作序列
- 网易编程题 操作序列
- 网易有道笔试编程之队列构造
- C++ Primer(第5版)
- Codeforces Round #371 (Div. 2) C. Sonya and Queries (01trie树)
- C++使用socket套接字的通信编程实现
- php中的几个判断文件和目录的函数 is_file() is_dir() mkdir() file_exists()
- 数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法
- 构造回文数操作_网易编程
- JS URL转码escape() encodeURI() encodeURIComponent()
- Installing maven 3.3.3 on Ubuntu
- 【Java并发编程】之二:线程中断(含代码)
- 初识单调栈
- hibernate hql 使用实例
- perl亲身试验ini---使用perl读写配置文件
- 【Java并发编程】之三:线程挂起、恢复与终止的正确方法(含代码)
- C语言随笔_区分=与==