算法设计与分析第一章 课后习题答案(c++)

该文章是算法设计与分析(第二版)中各章的课后习题 主编 : 李春葆

在本文中,主要是对该文第一章,绪论中的在线编程题进行代码解答。

代码运行环境是:DEVc++

问题一:
算法设计与分析第一章 课后习题答案(c++)_第1张图片
#include 
#include 
#include  
#include 
using namespace std;
bool com(string &a,string &b){
    return a.length() < b.length();
}
int main(){
    string s[] = {"car","cats","carriage","doggies","koala"};
    vector a(s,s+5);
    sort(a.begin(),a.end());
    vector::iterator it = a.begin();
    cout<<"按照字典序排序:"<::iterator it1 = a.begin();
    cout<<"按照长度排序:"<

代码运行截图:

算法设计与分析第一章 课后习题答案(c++)_第2张图片

问题二:

#include 
#include 
#include 
#include  
#include 
using namespace std;
int main(){
    string a = "";
    string b = "";
    cout<<"请输入一个字符串:"<>x;
    //输入0时,表示字符串的末尾 
    while(x != '0'){
        a += x;
        cin>>x;
    }
    string s = "";
    cout<<"请输入要删除的字符:"<>b;
    //将要删除的元素保存到哈希表中 
    unordered_map Ha;
    
    for(auto h : b){
        Ha.insert(make_pair(h,1));
    }
    
    //字符串C保存删除后的元素 
    cout<<"删除后的字符:" <

运行截图:

算法设计与分析第一章 课后习题答案(c++)_第3张图片

问题三:

算法设计与分析第一章 课后习题答案(c++)_第4张图片

#include 
#include 
#include 
#include 
using namespace std;
int main(){
    string s = "";
    cout <<"请输入一个带*号的字符串:"<>s; 
    string front = "",back = "";
    int k = 0;
    for(auto i : s){
        if(i == '*'){
            front += i;
            k++;
        }else{
            back += i;
        }
    }
    cout <<"-----------------"<

运行截图:

算法设计与分析第一章 课后习题答案(c++)_第5张图片

问题四:

算法设计与分析第一章 课后习题答案(c++)_第6张图片
#include 
#include 
#include 
#include 
//【问题描述】有两个用字符串表示的非常大的大整数,算出它们的乘积,
//也用字符串表示.不能用系统自带的大整数类型

using namespace std;
string mul(string s1,string s2){
    int len1 = s1.size() , len2 = s2.size();
    //cout <<"len1 =" < 10){
            int temp = result[i] / 10;
            result[i] = result[i] % 10;
            if(temp > 0){
                result[i+1] += temp;
            }
            
        }
    }
    //求前导0个数
    int pre = 0;
    for(i = len1 + len2 - 1 ; i >= 0 ;i--){
         if(result[i] == 0){
             pre++;
         }else{
             break;
         }
    } 
    
    //将数组中的元素转换为字符串 
    string ansow = "";
    cout<= 0;i--){
        int a = result[i];
        ansow += a +'0';
    }
    
    return ansow;
}
int main(){
    string s1 = "72106547548473106236",s2 = "982161082972751393";
    //ansow = 70820244829634538040848656466105986748
    string result = "";
    result = mul(s1,s2);
    cout <

运行截图:

算法设计与分析第一章 课后习题答案(c++)_第7张图片

问题五:

算法设计与分析第一章 课后习题答案(c++)_第8张图片
#include 
#include 
#include 
#include 
using namespace std;
//【问题描述】如果字符串t是字符串s的后面若干个字符循环右
//移得到的,称s和 t是旋转词,例如"abcdef"和"efabcd"是旋转词,
//而"abcdef"和"feabcd"不是 旋转词 

bool rotateString(string s, string goal) {
        
        if(s.size() != goal.size()){
            cout << s.size() << "  "<< goal.size()<

运行截图:

算法设计与分析第一章 课后习题答案(c++)_第9张图片
算法设计与分析第一章 课后习题答案(c++)_第10张图片

问题六:

算法设计与分析第一章 课后习题答案(c++)_第11张图片
算法设计与分析第一章 课后习题答案(c++)_第12张图片
#include 
#include 
#include 
#include 
#include 
using namespace std; 
int main(){
    int time = 5;
    int a[time] = {1,2,1,1,3};
    unordered_map ha;
    
    cout <<"访问的次数:"<

运行截图:

问题七:

算法设计与分析第一章 课后习题答案(c++)_第13张图片
#include 
#include 
#include 
#include 
#include 
using namespace std;
map mp;
vector vec;
bool cmp(int a, int b) {
    if(mp[a] != mp[b]) {
        return mp[a] >= mp[b];
    }
    return a<=b;
}
int main(){
    int n, idx = 0;
    cin >> n;
    while(n--) {
        int inp;
        cin >> inp;
        mp[inp]++;
        if(mp[inp] == 1) {
            vec.push_back(inp);
        }
    }
    sort(vec.begin(), vec.end(), cmp);
    for(int i = 0; i < vec.size(); i++) {
        cout << vec[i] << ' ' << mp[vec[i]] << endl;
    }
    return 0;
}
// 12 5 2 3 3 1 3 4 2 5 2 3 5

运行截图:

算法设计与分析第一章 课后习题答案(c++)_第14张图片

你可能感兴趣的:(算法设计与分析,算法,c++,开发语言)