当前位置:网站首页>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
边栏推荐
- [中国近代史] 第五章测验
- 编写程序,模拟现实生活中的交通信号灯。
- Difference and understanding between detected and non detected anomalies
- Reinforcement learning series (I): basic principles and concepts
- QT meta object qmetaobject indexofslot and other functions to obtain class methods attention
- Programme de jeu de cartes - confrontation homme - machine
- fianl、finally、finalize三者的区别
- 4.分支语句和循环语句
- Service ability of Hongmeng harmonyos learning notes to realize cross end communication
- PriorityQueue (large root heap / small root heap /topk problem)
猜你喜欢

1.初识C语言(1)

2022泰迪杯数据挖掘挑战赛C题思路及赛后总结

【黑马早报】上海市监局回应钟薛高烧不化;麦趣尔承认两批次纯牛奶不合格;微信内测一个手机可注册俩号;度小满回应存款变理财产品...

甲、乙机之间采用方式 1 双向串行通信,具体要求如下: (1)甲机的 k1 按键可通过串行口控制乙机的 LEDI 点亮、LED2 灭,甲机的 k2 按键控制 乙机的 LED1

5. Function recursion exercise

1. C language matrix addition and subtraction method

2. First knowledge of C language (2)

C language to achieve mine sweeping game (full version)

QT meta object qmetaobject indexofslot and other functions to obtain class methods attention

MySQL锁总结(全面简洁 + 图文详解)
随机推荐
Inaki Ading
4.分支语句和循环语句
【九阳神功】2019复旦大学应用统计真题+解析
编写程序,模拟现实生活中的交通信号灯。
【九阳神功】2017复旦大学应用统计真题+解析
MySQL中count(*)的实现方式
[au cours de l'entrevue] - Comment expliquer le mécanisme de transmission fiable de TCP
Change vs theme and set background picture
2022 Teddy cup data mining challenge question C idea and post game summary
Miscellaneous talk on May 14
5月27日杂谈
[during the interview] - how can I explain the mechanism of TCP to achieve reliable transmission
[modern Chinese history] Chapter 6 test
受检异常和非受检异常的区别和理解
Get started with typescript
The latest tank battle 2022 - Notes on the whole development -2
仿牛客技术博客项目常见问题及解答(一)
This time, thoroughly understand the MySQL index
为什么要使用Redis
Principles, advantages and disadvantages of two persistence mechanisms RDB and AOF of redis