好未来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;
}

  

时间: 2024-10-07 05:31:21

好未来2017秋招笔试真题二 --牛客网的相关文章

美团点评2017秋招笔试编程题

美团点评2017秋招笔试编程题 1, 大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步.求玩家走到第n步(n<=骰子最大点数且是方法的唯一入参)时,总共有多少种投骰子的方法. 题解: 写出前面的几个, 1 -> 1;   2 -> 2 ;  3 -> 4;   4 -> 8; 5 -> 16; 6 -> 32; 可以得到是 二的 n-1 次幂. #include <cstdio> int

网易2017春招笔试真题编程题集合题解

01 双核处理 题目 一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务.n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间. 输入描述 输入包括两行:第一行为整数n(1 ≤ n ≤ 50)第二行为n个整数lengthi,表示每个任务的长度为length[i]kb,每个数均为1024的倍数. 输出描述输出一个整数,表示最少需

百度2017春招笔试真题编程题之有趣的排序

问题描述: 度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作: 任取数组中的一个数然后将它放置在数组的最后一个位置. 问最少操作多少次可以使得数组从小到大有序? 输入描述: 首先输入一个正整数N,接下来的一行输入N个整数.(N <= 50, 每个数的绝对值小于等于1000) 输出描述: 输出一个整数表示最少的操作次数. 示例1 输入 4 19 7 8 25 输出 2-----------------------------------------------

百度2017春招笔试真题编程题集合之寻找三角形

题目描述 三维空间中有N个点,每个点可能是三种颜色的其中之一,三种颜色分别是红绿蓝,分别用'R', 'G', 'B'表示. 现在要找出三个点,并组成一个三角形,使得这个三角形的面积最大.但是三角形必须满足:三个点的颜色要么全部相同,要么全部不同. 输入描述: 首先输入一个正整数N三维坐标系内的点的个数.(N <= 50) 接下来N行,每一行输入 c x y z,c为'R', 'G', 'B' 的其中一个.x,y,z是该点的坐标.(坐标均是0到999之间的整数) 输出描述: 输出一个数表示最大的三

美团点评2017秋招笔试编程题——大富翁游戏

大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步.求玩家走到第n步(n<=骰子最大点数且是方法的唯一入参)时,总共有多少种投骰子的方法. 输入描述: 输入包括一个整数n,(1 ≤ n ≤ 6) 输出描述: 输出一个整数,表示投骰子的方法 思路:递归的思路.n=1时,有1种方法:n=2时,有2种方法:n=3时,有4种方法,在当前n步时应该有前n-1步的方法数加上当前直接投n的方法.即f(n)=f(n-1)+f(n-2)+...+f(

网易2017春招笔试真题编程题集合(8)——奇怪的表达式求值

常规的表达式求值,我们都会根据计算的优先级来计算.比如*/的优先级就高于+-.但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有/,只有(+, - 和 *).现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值为多少 输入描述: 输入为一行字符串,即一个表达式.其中运算符只有-,+,*.参与计算的数字只有0~9. 保证表达式都是合法的,排列规则如样例所示. 输出描述: 输出一个数,即表达式的值 输入例子: 3+5*7 输出例子

网易2017春招笔试真题编程题集合(7)——集合

小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性.小易的老师给了小易这样一个集合:S = { p/q | w ≤ p ≤ x, y ≤ q ≤ z }需要根据给定的w,x,y,z,求出集合中一共有多少个元素.小易才学习了集合还解决不了这个复杂的问题,需要你来帮助他. 输入描述: 输入包括一行: 一共4个整数分别是w(1 ≤ w ≤ x),x(1 ≤ x ≤ 100),y(1 ≤ y ≤ z),z(1 ≤ z ≤ 100).以空格分隔 输出描述: 输出集合中

网易2017春招笔试真题编程题集合——分饼干

参考:http://blog.csdn.net/wwe4023/article/details/70171648的内容 // import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String line = in.nextLine(); int n = Integer.parseInt(in.nextLine());

网易2017春招笔试真题编程题集合——调整队形

时间限制:1秒 空间限制:32768K 在幼儿园有n个小朋友排列为一个队伍,从左到右一个挨着一个编号为(0~n-1).其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示.小朋友们都很顽皮,当一个男生挨着的是女生的时候就会发生矛盾.作为幼儿园的老师,你需要让男生挨着女生或者女生挨着男生的情况最少.你只能在原队形上进行调整,每次调整只能让相邻的两个小朋友交换位置,现在需要尽快完成队伍调整,你需要计算出最少需要调整多少次可以让上述情况最少.例如:GGBBG -> GGBGB -> G