拼多多算法9月25

100,0,100,0
第二题卡住了
就贴个第三题吧
#include <iostream>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
#include <vector>
#include <list>
#include <stack>
#include <string>
#include <set>
#include <queue>
#include <climits>
#include <unordered_set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <unordered_map>
#include <initializer_list>
#include <typeinfo>
#include <map>
typedef  long long ll;
using namespace std;
int cnt = 0;
double dp[55][55];
double dfs(int u,int v){
    if(dp[u][v] != 0){
        return dp[u][v];
    }
    double ans = 0;
    if((u == 0&& v== 0)) return dp[u][v] = 1.0;
    if(u != 0){
        ans += dfs(u - 1,v);
    }
    if(v != 0){
        ans += dfs(u,v - 1);
    }
    return dp[u][v] = (ans + 1);
}
string ans = "";
int flag = 0;
double eps = 1e-6;
void get_ans(ll u,ll v,double k){
    if(abs(k) < eps){
        flag = 1;
        return;
    }
    if(u -1 >=0 && dp[u - 1][v] >= k){
        ans += "a";
        get_ans(u-1,v,k - 1);
        if(flag) return;
    }else if(v -1 >=0){
        ans += "b";
        get_ans(u,v - 1,k - dp[u - 1][v] - 1);
        if(flag) return;
    }
}
int main() {

    dfs(54,54);
    ll n,m;double k;
    scanf("%lld%lld%lf",&n,&m,&k);
    get_ans(n,m,k);
    cout << ans << endl;
    return 0;
}


#笔试题目##拼多多#
全部评论
大佬讲下第三题思路呗
点赞 回复 分享
发布于 2019-09-25 17:19
LZ很强。 其实第二题线段树就行了。
点赞 回复 分享
发布于 2019-09-25 17:20
请教下楼主,dp里面为什么要用float类型啊,不是个数么,用int不行吗
点赞 回复 分享
发布于 2019-09-25 17:25
我用long long输出dp[n][m]会爆longlong,变成负数。最后没想到可以用double。楼主tql
点赞 回复 分享
发布于 2019-09-25 17:39
还以为凉了,拼多多打电话让面试了。祝我好运吧。
点赞 回复 分享
发布于 2019-09-26 15:52
面试顺利完成,等结果。
点赞 回复 分享
发布于 2019-09-29 12:28

相关推荐

点赞 评论 收藏
分享
评论
2
12
分享

创作者周榜

更多
牛客网
牛客企业服务