贪心算法——完美的代价
来源:互联网 发布:sqlserver 图标 编辑:程序博客网 时间:2024/05/17 22:43
/*问题描述
回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
交换的定义是:交换两个相邻的字符
例如mamad
第三次交换 ma : madam (回文!完美!)
输入格式
第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
第二行是一个字符串,长度为N.只包含小写字母
输出格式
如果可能,输出最少的交换次数。
否则输出Impossible
样例输入
5
mamad
样例输出
3
回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
交换的定义是:交换两个相邻的字符
例如mamad
第一次交换 ad : mamda
第二次交换 md : madma第三次交换 ma : madam (回文!完美!)
输入格式
第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
第二行是一个字符串,长度为N.只包含小写字母
输出格式
如果可能,输出最少的交换次数。
否则输出Impossible
样例输入
5
mamad
样例输出
3
*/
import java.util.Scanner;class Task implements Runnable{private char[] cString = new char[] {'m','a','m','a','d'};public Task() {}public Task(char[] cString) {this.cString = cString;}@Overridepublic synchronized void run() {//总步数int sum = 0;//输入字符串不能达到目标要求的标志int flag = 0;//不止一个无相同的字符int single = 0;//代码优化int n = cString.length;//尾指针指向int point = n-1;for (int i = 0;i < n;i++) {for(int j = point;j >= i;j--) {if(i == j) {if(n % 2 == 0 || single != 0) {flag = 1;break;}sum += n/2 - i;single = 1;break;}if(cString[i] == cString[j]) {for(int k = j;k < point;k++) {cString[k] = cString[k+1];}cString[point] = cString[i];sum += point - j;point--;break;}}if(flag == 1) {break;}}System.out.println(flag == 1?"impossible":"最少交换次数:"+sum);}}public class Step1 {public static void main(String[] args) {//Scanner scanner = new Scanner(System.in);//int n = scanner.nextInt();//scanner.nextLine();//清除nextInt在缓冲区留下的“\r”//String string = scanner.nextLine();//char[] cs = string.toCharArray();//Task task = new Task(cs);Task task = new Task();new Thread(task).start();}}
阅读全文
1 0
- 贪心算法——完美的代价
- 基础训练 完美的代价(贪心算法)
- 蓝桥杯练习题 BASIC-19 完美的代价(贪心算法)
- 完美的代价——回文字符串
- 贪心算法(四)——最小代价生成树
- 蓝桥杯 基础练习 完美的代价 【贪心 + string】
- 完美的代价解答
- 完美的代价
- 12.完美的代价
- 蓝桥杯 完美的代价
- 完美的代价-题解
- 完美的代价
- 完美的代价
- 完美的代价
- 完美的代价
- 完美的代价
- 完美的代价
- 完美的代价
- Linux中进程通讯--信号量
- INSERT 语句与 FOREIGN KEY SAME TABLE 约束"FK__Course__Cpno__1367E606"冲突。该冲突发生于数据库"student",表"dbo.Course",
- 【LeetCode 4-5】4.Median of Two Sorted Arrays 5.Longest Palindromic Substring
- Java五种字符串连接的性能比较
- 单向循环链表C语言实现
- 贪心算法——完美的代价
- 第八周项目三(4)—顺序串算法之串中字符的替换
- 代码块、继承、final关键字
- 初识Linux--Linux常用的命令小结
- C#引用win32API
- contenttypes框架
- Inception V2
- HTML5水滴特效
- 图像语义分割技术发展(1)