网易C++笔试第三题求ac

第三题最大值的最小值问题
就做了这一个,还66.。。。。难受。。。而且临时从车上又换环境到室内,还不知道会不会被判作弊
66的代码
int main(){
    int n=0;
    cin>>n;
    vector<long>v;
    for(int i=0;i<n;i++){
        long temp;
        cin>>temp;
        v.push_back(temp);
    }
    int min=0;
    for(int i=1;i<=n;i++){//i步切割
        int t=0;
        vector<int> vv;
        int m=n-i+1;
        while(t<m){
            int s=i+t;
            long max=0;
            for(int j=t;j<s;j++){
                int temp=v[j];
            if(v[j]>max){
                max=v[j];
            }
        }
            vv.push_back(max);
        t++;
        }
        sort(vv.begin(),vv.end());
        cout<<vv[0]<<" ";
    }
    system("pause");
    return 0;
}


#网易##笔试题目##秋招##C++工程师#
全部评论
#include <iostream> #include <vector> using namespace std; vector< vector<int> > dp; vector<int> max_min; int pop_function(vector<int> nums, int n) {     int min = 99999;     for(int j = 1; j < n; j ++)     {         int k = j;         min = 99999;         for(int i = 0; i < nums.size() - k; i ++)         {             dp[i][k] =  nums[i + k] > dp[i][k - 1] ? nums[i + k] : dp[i][k - 1];             if(dp[i][k] < min)                 min = dp[i][k];         }         max_min.push_back(min);     }     return 1; } int main() {     int n;     cin>>n;     dp.resize(n);     for(int j = 0; j < n; j ++)     {         dp[j].resize(n);     }     vector<int> nums;     int i = 0;     int min = 99999;     while(i < n)     {         int a;         cin>>a;         nums.push_back(a);         dp[i][0] = a;         if(a < min)             min = a;         i++;     }     max_min.push_back(min);     pop_function(nums, n);     for(int j = 0; j < max_min.size(); j ++)     {         cout<<max_min[j]<<" ";     } }
点赞 回复 分享
发布于 2019-08-03 20:52
DP思路。 不知道对不对
点赞 回复 分享
发布于 2019-08-03 20:53

相关推荐

07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
评论
点赞
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务