华为在线训练(6)
2016-08-11 22:15
190 查看
一、编程查找两个字符串的最大公共子串
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
例示:
jack 70
peter 96
Tom 70
smith 67
从高到低 成绩 flag=0
peter 96
jack 70
Tom 70
smith 67
从低到高 flag=1
smith 67
Tom 70
jack 70
peter 96
说明:
1、sort与stable_sort的区别。
使用stable_sort可以保证相等元素的原本相对次序在排序后保持不变,而sort不能保证
2、自定义比较函数
在没有指明排序的规则是,系统默认a<b返回为真,即默认从小到大排序。在自定义比较函数
bool comp(const int &a,const int &b)//注意:这里传递的是引用
{
return a>b;
}
会进行从大到小排序。
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; char *commonstring(char *str1,char *str2) { int i,j; char *shortstr,*longstr; char *substr; if(str1==NULL||str2==NULL)//判断str1与str2的有效性 { return NULL; } if(strlen(str1)<=strlen(str2))//<span style="font-family: Arial, Helvetica, sans-serif;">shortstr和longstr分别指向较短和较长的字符串</span> { shortstr=str1; longstr=str2; } else { shortstr=str2; longstr=str1; } if(strstr(longstr,shortstr)!=NULL)//strstr()函数功能用于判断shortstr是否为longstr的子串 { return shortstr;//如果是,返回短字符串 } substr=(char *)malloc(sizeof(char)*(strlen(shortstr)+1)); for(i=strlen(shortstr)-1;i>0;i--) { for(j=0;j<=strlen(shortstr)-i;j++) { memcpy(substr,&shortstr[j],i);//将字符串的一部分复制到substr substr[i]='\0'; //其长度逐渐减小 if(strstr(longstr,substr)!=NULL)//如果在longstr中能找到substr,则返回substr return substr; } } return NULL; } int main() { char *str1=(char *)malloc(256); char *str2=(char *)malloc(256); char *common=NULL; while(cin>>str1>>str2) { common=commonstring(str1,str2); if(common!=NULL) { cout<<common<<endl; } else cout<<"字符为空"<<endl; } return 0; }二、查找和排序
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
例示:
jack 70
peter 96
Tom 70
smith 67
从高到低 成绩 flag=0
peter 96
jack 70
Tom 70
smith 67
从低到高 flag=1
smith 67
Tom 70
jack 70
peter 96
说明:
1、sort与stable_sort的区别。
使用stable_sort可以保证相等元素的原本相对次序在排序后保持不变,而sort不能保证
2、自定义比较函数
在没有指明排序的规则是,系统默认a<b返回为真,即默认从小到大排序。在自定义比较函数
bool comp(const int &a,const int &b)//注意:这里传递的是引用
{
return a>b;
}
会进行从大到小排序。
#include<stdio.h> #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; bool Compare_up(const pair<string, int>& a, const pair<string, int>& b) //少了const 会报错 { return a.second > b.second; } bool Compare_down(const pair<string, int>& a, const pair<string, int>& b) { return a.second < b.second; } int main() { int num, compare_mode, score,i; string name; while(cin>>num>>compare_mode) { vector< pair<string,int> >str_int; //vc6.0中>>之间要有空格 for(i=0;i<num;i++) { cin>>name>>score; str_int.push_back(make_pair(name,score)); } if(compare_mode==0) stable_sort(str_int.begin(),str_int.end(),Compare_up); else stable_sort(str_int.begin(),str_int.end(),Compare_down); /*vector< pair<string,int> >::iterator vi; for(vi=str_int.begin();vi!=str_int.end();vi++) cout<<(*vi).first<<" "<<(*vi).second<<endl;*/ for(i=0;i<num;i++) cout<&l 4000 t;str_int[i].first<<" "<<str_int[i].second<<endl; } return 0; }
相关文章推荐
- springMVC注解方式返回json
- 【OVS2.5.0源码分析】ofpbuf数据结构分析
- Sqli-labs less 33
- 编写的一个矩阵类(C++描述)
- MAC OSX mpi安装
- JAVA中的并发工具类(三)---CountDownLatch
- Sqli-labs less 34
- 苹果电脑的快捷键介绍
- Python模块之ConfigParser - 读写配置文件
- ef操作类
- eclipse配置Android环境
- thinking in java test4.8练习(8)(9)(10)吸血鬼数字
- Cookie/Session机制详解
- java基础之常用类的方法
- ACM文献citation批量下载
- Sqli-labs less 35
- OpenCV学习笔记(五)
- (湖南省第八届大学生计算机程序设计竞赛)平方根大搜索 (Java大小数+二分开平方)
- 排序算法总结与实现
- LinkedCaseInsensitiveMap的使用