当前位置:网站首页>Yugu p1012 spelling +p1019 word Solitaire (string)
Yugu p1012 spelling +p1019 word Solitaire (string)
2022-07-06 13:51:00 【zjsru_ Beginner】
Topic 1 ( Spell numbers )
Equipped with nn A positive integer a_1 \dots a_na1…an, Join them in a row , Adjacent numbers end to end , Make up the largest integer .
Input format
The first line has an integer , Represents the number of numbers nn.
The second line has nn It's an integer , Indicates the given nn It's an integer a_iai.
Output format
A positive integer , Represents the largest integer
I/o sample
Input
3 13 312 343
Output
34331213
Input
4 7 13 4 246
Output
7424613
Their thinking
The question is relatively simple , It is a problem of string splicing to get the largest integer . Change the code bool cmp Judgment is important , The judgment is a+b and b+a String size , instead of a and b The size of the string , Because judging alone a and b The number spliced by the size of may not be the maximum ( for example 521 and 52), And then main In the function sort Sort , Output results .
The code is as follows
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int n;
string s[20];
bool cmp(string a, string b) {
return a + b > b + a;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s[i];
}
sort(s+1, s + n+1 , cmp);
for (int i = 1; i <= n; i++){
cout << s[i];
}
return 0;
}
The operation results are as follows :
Topic two ( The word chain )
The word Solitaire is a game similar to the idiom Solitaire we often play , Now we know a set of words , And given a starting letter , Ask for the longest beginning with this letter “ dragon ”( Every word is at most “ dragon ” There are two times ), When two words are connected , The overlapping parts are combined into one part , for example beast
and astonish
, If connected into a dragon, it becomes beastonish
, In addition, two adjacent parts cannot have a containment relationship , for example at
and atide
Can't be connected .
Input format
The first line of input is a single integer nn Indicates the number of words , following nn Each line has a word , The last line of input is a single character , Express “ dragon ” The first letter . You can assume that “ dragon ” There must be .
Output format
Just output the longest... Starting with this letter “ dragon ” The length of .
I/o sample
Input
5 at touch cheat choose tact a
Output
23
Their thinking
This question should pay attention to three points :1. Use each word twice at most
2. Words can be left unfinished , The longer the length, the better
3. The less overlap, the better , The longer the Dragon
There are two functions in the following code , among xianjie Function the connection of two strings , from 1 Start , Connect the two shortest strings , Returns the length of the smallest overlap , stay solve Search in function , Get the maximum string length .
The code is as follows
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int a[20];
int n,length=0;
string s[20];
int xianjie(string s1,string s2){
for(int i=1;i<min(s1.length(),s2.length());i++){ // Length of overlap
int flag=1;
for(int j=0;j<i;j++)
if(s1[s1.length()-i+j]!=s2[j]) // Check whether the strings are equal
flag=0;
if(flag==true)
return i;
}
return 0;
}
void solve(string str,int length1){
length=max(length1,length); // Maximum length
for(int i=0;i<n;i++){
if(a[i]>=2) // The number of uses must be less than 2
continue;
int c=xianjie(str,s[i]); // Length of overlap
if(c>0){ // To search
a[i]++;
solve(s[i],length1+s[i].length()-c);
a[i]--;
}
}
}
int main(){
cin>>n;
for(int i=0;i<=n;i++){
a[i]=0;
cin>>s[i];
}
solve(' '+s[n],1); //xianjie The overlap of the function needs to be less than the shortest length -1, So add a meaningless full length from the front ‘ ’. This is mandatory xianjie The function compares the last bit
cout<<length;
}
The operation results are as follows
big data 201 tyx
边栏推荐
- PriorityQueue (large root heap / small root heap /topk problem)
- 扑克牌游戏程序——人机对抗
- 【九阳神功】2018复旦大学应用统计真题+解析
- [during the interview] - how can I explain the mechanism of TCP to achieve reliable transmission
- 仿牛客技术博客项目常见问题及解答(二)
- 自定义RPC项目——常见问题及详解(注册中心)
- MySQL事务及实现原理全面总结,再也不用担心面试
- 2.初识C语言(2)
- 简单理解ES6的Promise
- 【手撕代码】单例模式及生产者/消费者模式
猜你喜欢
ABA问题遇到过吗,详细说以下,如何避免ABA问题
MySQL事务及实现原理全面总结,再也不用担心面试
3. C language uses algebraic cofactor to calculate determinant
2022泰迪杯数据挖掘挑战赛C题思路及赛后总结
About the parental delegation mechanism and the process of class loading
3. Number guessing game
受检异常和非受检异常的区别和理解
Service ability of Hongmeng harmonyos learning notes to realize cross end communication
一段用蜂鸣器编的音乐(成都)
自定义RPC项目——常见问题及详解(注册中心)
随机推荐
扑克牌游戏程序——人机对抗
简单理解ES6的Promise
Wechat applet
实验六 继承和多态
Beautified table style
1.C语言初阶练习题(1)
7-9 制作门牌号3.0(PTA程序设计)
【VMware异常问题】问题分析&解决办法
QT meta object qmetaobject indexofslot and other functions to obtain class methods attention
canvas基础1 - 画直线(通俗易懂)
Detailed explanation of redis' distributed lock principle
FAQs and answers to the imitation Niuke technology blog project (I)
SRC挖掘思路及方法
Using qcommonstyle to draw custom form parts
ArrayList的自动扩容机制实现原理
The latest tank battle 2022 full development notes-1
仿牛客技术博客项目常见问题及解答(一)
4. Branch statements and loop statements
Custom RPC project - frequently asked questions and explanations (Registration Center)
【九阳神功】2016复旦大学应用统计真题+解析