好未来2017秋招笔试真题二 --牛客网

好未来2017秋招笔试真题二 --牛客网

 

链接:https://www.nowcoder.com/questionTerminal/ee5de2e7c45a46a090c1ced2fdc62355
来源:牛客网

将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I

输入描述:
每个测试输入包含1个测试用例:  I like  beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
输入例子:
I like  beijing.
输出例子:
beijing. like I

 

#include <iostream>
#include <string> 
#include <algorithm>
using namespace std;
 
int main(){
    string st;
    getline(cin, st);
    int start = 0;
    reverse(st.begin(), st.end());
    for(int i=0; i<st.length(); ++i){
        if(st[i] == ' '){
            reverse( st.begin()+start, st.begin()+i );
            start = i+1;
        }else if( i==st.length()-1 ){
            reverse(st.begin()+start, st.end());
        }
    }
    cout << st << endl;
    return 0;
}

  

 

链接:https://www.nowcoder.com/questionTerminal/f0db4c36573d459cae44ac90b90c6212
来源:牛客网

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

输入描述:
每个测试输入包含2个字符串
输出描述:
输出删除后的字符串
输入例子:
They are students.
aeiou
输出例子:
Thy r stdnts.

 

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
const int MAXN = 1024;
 
int main(){
    int j;
    char ch1[MAXN], ch2[MAXN], ans[MAXN];
    cin.getline( ch1, MAXN);
    scanf("%s", ch2);
    int vis[128] = {0};
    for(int i=0; i<strlen(ch2); ++i){
        vis[ch2[i]] = 1;
    }
    j = 0;
    for(int i=0; i<strlen(ch1); ++i){
        if(vis[ ch1[i] ] == 0){
            ans[j++] = ch1[i];
        }
    }
    ans[j] = '\0';
    printf("%s\n", ans );
    return 0;
}

  

 

链接:https://www.nowcoder.com/questionTerminal/11cc498832db489786f8a03c3b67d02c
来源:牛客网

输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来

输入描述:
每个测试输入包含2个整数,n和m
输出描述:
按每个组合的字典序排列输出,每行输出一种组合
输入例子:
5 5
输出例子:
1 4
2 3
5

 

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
const int MAXN = 1000;
 
int n, m, num[MAXN];
 
void dfs(int cur, int sum){
    if(sum == m){
        for(int i=0; i<cur; ++i){
            if(i == cur-1){
                printf("%d\n", num[i] );
            }else{
                printf("%d ", num[i]);
            }
        }
        return;
    }
    for(int i=num[cur-1]+1; i<=n; ++i){
        if(sum + i > m){
            break;
        }
        num[cur] = i;
        dfs(cur+1, sum+i);
    }
}
 
int main(){
    scanf("%d %d", &n, &m);
    for(int i=1; i<=n && i<=m; ++i){
        num[0] = i;
        dfs(1, i);
    }
    return 0;
}

  

 

posted @ 2017-04-15 17:11  zhang--yd  阅读(782)  评论(0编辑  收藏  举报