codeforce-600C. Make Palindrome(貪心)

http://codeforces.com/problemset/problem/600/C;

題意:給你一個小寫字母組成的英文串,將它轉換為回文串,要求,改變的字母的個數最小,移動字母不算改變字母。

所得的串字典序是最小的。最后輸出所得到的串。

思路:要求改變的字母數最小那么用貪心的思想,就把原來的字母盡可能多的填入要求的串中。

首先,先把原串中的字母統計出來,開個數組存對應的字符的個數,然后從‘a’開始循環,如果對應字母的個數大于1;

如果是偶數個的話,就在所求串兩端一邊加一個,可以正好加完,若是奇數個的話那么按這樣的操作,最后就剩下一個,那么把它加入隊列。

最后操作隊列中的單個的,然后補一個加到串的兩端,直到串被補滿。

然后再對串的一半排下序就可以了。

  1 #include<stdio.h>
  2 #include<algorithm>
  3 #include<iostream>
  4 #include<string.h>
  5 int cmp(const void*p,const void*q);
  6 char a[100005*2];
  7 char b[100005*2];
  8 char c[100005*2];
  9 char bb[100005*2];
 10 int aa[26];
 11 #include<queue>
 12 using namespace std;
 13 int main(void)
 14 {
 15     int n,i,j,k,p,q,l,z;
 16     while(scanf("%s",a)!=EOF)
 17     {
 18         queue<int>que;
 19         z=0;
 20         memset(aa,0,sizeof(aa));
 21         l=strlen(a);
 22         for(i=0; i<l; i++)//統計對應的字母有多少個
 23         {
 24             aa[a[i]-'a']++;
 25         }
 26         int t=0;
 27         for(i=0; i<26; i++)
 28         {
 29             if(aa[i]!=0)
 30             {
 31                 if(aa[i]>=2)//大于2的先加在串的兩端
 32                 {
 33                     while(aa[i]>1)
 34                     {
 35                         aa[i]-=2;
 36                         a[t]=i+'a';
 37                         a[l-1-t]=i+'a';
 38                         t++;
 39                         z+=2;
 40                     }
 41                 }
 42                 if(aa[i]==1) que.push(i);//剩下1的入隊
 43 
 44             }
 45 
 46 
 47         }
 48         while(!que.empty())
 49         {
 50             int f=que.front();
 51             que.pop();
 52             if(z>=l)
 53             {
 54                 break;
 55             }
 56             while(aa[f]>0)
 57             {
 58                 aa[f]-=2;
 59                 a[t]=f+'a';
 60                 a[l-1-t]=f+'a';
 61                 t++;
 62                 z+=2;
 63                 if(z>l)
 64                 {
 65                     break;
 66                 }
 67             }
 68             if(z>=l)//當滿了就跳出
 69             {
 70                 break;
 71             }
 72         }
 73         int uu;
 74         if(l%2==0)//找串的一半(分奇數偶數討論)
 75         {
 76             uu=l/2;
 77         }
 78         else uu=(l-1)/2;
 79         for(i=0; i<uu; i++)
 80         {
 81             b[i]=a[i];
 82         }
 83         qsort(b,uu,sizeof(char),cmp);//對串的一半排序
 84         for(i=0; i<uu; i++)
 85         {
 86             printf("%c",b[i]);
 87         }
 88         if(l%2==1)
 89         {
 90             printf("%c",a[(l)/2]);
 91         }
 92         for(i=uu-1; i>=0; i--)
 93         {
 94             printf("%c",b[i]);
 95         }
 96         printf("\n");
 97 
 98     }
 99     return 0;
100 }
101 int cmp(const void*p,const void*q)
102 {
103     char *w=(char*)p;
104     char *u=(char*)q;
105     return (*w-'a')-(*u-'a');
106 }

?

轉載于:https://www.cnblogs.com/zzuli2sjy/p/5008089.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258015.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle觸發器沒有效果,觸發器不起作用,各位幫忙看看什么原因?

測試數據模型如下&#xff1a;Create Table test_c (Id Number,seq Number,state varchar2(5));select a.*,rowid from test_c aInsert Into test_cValues(1011,101,00A);Insert Into test_cValues(1012,101,00A);Insert Into test_cValues(1021,102,00A);Insert Into test_cVa…

10個我最喜歡問程序員的面試問題

最近我拜讀很多文章&#xff0c;都是介紹面試問題的&#xff0c;我真心不理解&#xff0c;面試官代表公司想要聘用的是最優秀的程序員&#xff0c;那就意味著需要想出一些有意義的面試問題。如果你就提一些毫無用處的垃圾問題&#xff0c;那么很容易遺漏很多能干的程序員。當然…

oracle動態性能視圖和靜態,oracle最重要的9個動態性能視圖

v$session v$session_wait (在10g里功能被整合,湊合算1個吧.)v$processv$sqlv$sqltextv$bh (更寧愿是x$bh)v$lockv$latch_childrenv$sysstatv$system_event按組分的幾組重要的性能視圖1。System 的 over viewv$sysstat , v$system_event , v$parameter2。某個session 的當前情況…

glTF格式初步了解

glTF格式初步了解近期看到Qt 3D的進展。偶然了解到了一種新的格式&#xff1a;glTF格式。這樣的格式據說比現有的3D格式更加符合OpenGL應用的須要。這引起了我的好奇。于是我在Qt 3D的外部鏈接中找到了有關glTF的相關鏈接。上海萌夢信息科技有限公司&#xff08;微博&#xff1…

【】局部刷新:

【】局部刷新&#xff1a; //頁面加載時綁定按鈕點擊事件$(function(){ $("#按鈕id").click(function(){ refresh(); });});//點擊按鈕調用的方法function refresh(){ window.location.reload();//刷新當前頁面. //或者下方刷新方法 //par…

技術貼-搜狗打字

超強技術帖&#xff1a;遇到不會讀的字&#xff0c;怎么用拼音打出來&#xff1f;】方法很簡單&#xff0c;就是先打個“u”然后打各個部首的讀音&#xff0c;就能在拼音輸入法中打出來哦。比如&#xff0c;骉&#xff0c;可以輸入umamama&#xff0c;輸入法就會自動出現“骉”…

【第二十七章】 springboot + zipkin(brave-okhttp實現)

本文截取自&#xff1a;http://blog.csdn.net/liaokailin/article/details/52077620 一、前提 1、zipkin基本知識&#xff1a;附8 zipkin 2、啟動zipkin server&#xff1a; 2.1、在官網下載服務jar&#xff0c;http://zipkin.io/pages/quickstart.html&#xff0c;之后使用命令…

Oracle 數據定義語言,oracle 數據定義語言(DDL)語法

DDL語言包括數據庫對象的創建(create)、刪除(drop)和修改(alter)的操作1.創建表語法create table table_name(column_name datatype [null | not null],column_name datatype [null | not null],..........[constraint])constraint 是為表中的列設置約束&#xff0c;常見的有…

Android內存泄漏問題(一)

前言 不少人認為JAVA程序&#xff0c;因為有垃圾回收機制&#xff0c;應該沒有內存泄露。 其實如果我們一個程序中&#xff0c;已經不再使用某個對象&#xff0c;但是因為仍然有引用指向它&#xff0c;垃圾回收器就無法回收它&#xff0c;當然該對象占用的內存就無法被使用&…

向上彈出菜單jQuery插件

插件名&#xff1a;柯樂義英文名&#xff1a;Keleyijs文件名稱&#xff1a;jquery.keleyi.js插件功能&#xff1a;該插件可以讓你輕易地在頁面上構建一個向上彈出的二級菜單。支持瀏覽器&#xff1a;keleyi 0.1.4版本支持IE6以及以上、Chrome、火狐(Firefox)、歐朋(Opera)、Saf…

oracle在線sql數據庫設計,一款在線ER模型設計工具,支持MySQL、SQLServer、Oracle、Postgresql...

在線QQ客服&#xff1a;1922638專業的SQL Server、MySQL數據庫同步軟件介紹一個在線ER模型生成工具&#xff0c;該工具可以在線為多個數據庫的DDL文件生成ER模型圖&#xff0c;并支持MySQL&#xff0c;SQLServer&#xff0c;Oracle&#xff0c;PostgreSQL和其他數據庫。主要功能…

_M_invoke(_Index_tuple_Indices...)

2019獨角獸企業重金招聘Python工程師標準>>> [hadoopiZ25s7cmfyrZ C_script]$ cat test_thread_a.cpp #include <iostream> #include <atomic> #include <thread> #include <vector>std::atomic<int> global_counter(0);void increa…

十年后2023年再讀這篇文章,看看我將會怎么樣?

http://blog.csdn.net/wojiushiwo987/article/details/8453881看到一篇文章不錯【清華差生10年奮斗經歷】 &#xff0c;寫給將要工作的自己&#xff0c;十年后2023年再讀這篇文章&#xff0c;看看我將會怎么樣&#xff1f; 在2012年收關時刻&#xff0c;看到如此激勵的文章&…

1203正規式轉換為有窮自動機

1 #include<stdio.h>2 #include <ctype.h>3 #define ok 14 #define error 05 #define MAXREGLUARLONG 406 #define MAXSTATELONG 40 7 #define MAXCAHRSLONG 40 8 typedef int state;9 int iCurrentState0; //初態以1開始10 int iPreState0;11 in…

fasttext的基本使用 java 、python為例子

fasttext的基本使用 java 、python為例子 今天早上在地鐵上看到知乎上看到有人使用fasttext進行文本分類&#xff0c;到公司試了下情況在GitHub上找了下&#xff0c;最開始是c版本的實現&#xff0c;不過有Java、Python版本的實現了&#xff0c;正好拿下來試試手&#xff0c; p…

oracle spring 分頁查詢,SpringJDBC 調用oracle 通用存儲過程分頁

我博客前面有寫道SpringJDBC調用通用的Oracle存儲過程,今天來講一下通用的Java存儲過程帶分頁的功能,其中里面還有動態查詢的SQL拼接,好的,先上代碼1.Java代碼Autowiredprivate JdbcTemplate jdbcTemplate;/**分頁查詢* return*/ResponseBodyRequestMapping(value "/find…

寶寶頭三年至關重要,不看悔掉腸子

http://www.nowamagic.net/librarys/eight/posts/1885以下是一個早教工作者分享他關于現代父母早期教育中出現的問題和多數父母的誤區。正如作者問自己的&#xff1a;“在孩子人生最重要的頭三年&#xff0c;我做對了嗎&#xff1f;在我的引導下&#xff0c;她能保持強烈的探索…

2015年底總結

2015-12-06 16:17&#xff0c;今天是周日&#xff0c;不需要加班的&#xff0c;到公司看看書&#xff0c;寫寫代碼的&#xff0c;突然想到又是年底了&#xff01;需要寫點東西來記錄總結一下2015年了 年初的時候&#xff0c;入職現在這家成都游戲公司&#xff0c;到現在差不多也…

python腳本

01.用戶三次登錄鎖定猜年齡游戲02.購物車省縣市三級聯動03.函數、文件操作實現數據增刪改查---low版本04.ATM購物商城05.模擬計算器持續更新中...腳本很low&#xff0c;但我一直在學。。。轉載于:https://blog.51cto.com/lyndon/1947437

oracle 命令日志輸出,ORACLE常用命令日志

第一章&#xff1a;日志管理1.forcing log switchessql> alter system switch logfile;2.forcing checkpointssql> alter system checkpoint;3.adding online redo log groupssql> alter database add logfile [group 4]sql> (/disk3/log4a.rdo,/disk4/log4b.rdo) …