深信服 2019校園招聘 研發試卷-2018.09.21

就做出來一道題,慚愧
1-1.png
1-2.png
1-3.png
2-1.png
2-2.png
2-3.png
感覺樣例第三個有問題
1 2 3 3 6 9 我覺得應該輸出1 1,可樣例輸出UNKNOWN
以下是錯誤代碼,0%
實在找不到問題,,,GG

#include <iostream>

using namespace std;

int main()
{
    int T;
    cin >> T;
    for(int i=0; i<T; i++){
        float a1, b1, v1, a2, b2, v2, x, y;
        cin >> a1 >> b1 >> v1 >> a2 >> b2 >> v2;
        if(a1+b1 == v1 && a2+b2 == v2){
            cout << 1 << " " << 1 << endl;
            continue;
        }
        x = (v1-b1/b2*v2)/(a1-b1/b2*a2);
        y = (v2-a2*x)/b2;
        if(x >= 0 && x <= 1000000000 && y >= 0 && y <= 1000000000
           && x-(int)x == 0 && y-(int)y == 0){
            cout << x << " " << y << endl;
            continue;
        }
        cout << "UNKNOWN" << endl;
        //cout << x << " " << y << endl;
    }
    return 0;
}

3-1.png
3-2.png
3-3.png
3-4.png
求最小連續子序列和,DP思想

#include <bits/stdc++.h>
#define MAX 10000005
// A[i] 存放序列,dp[i] 存放以 A[i] 爲結尾的連續序列的最大和
int A[MAX], dp[MAX];
// 求較大值
int min(int a, int b) {
    return a<b ? a : b;
}
int main() {
    int T, i, res;
    scanf("%d", &T);
    for(i=0; i<T; ++i) {        // 輸入序列
        scanf("%d", &A[i]);
    }
    dp[0] = A[0];                // 邊界
    for(i=1; i<T; ++i) {
        // 狀態轉移方程
        dp[i] = min(A[i], dp[i-1] + A[i]);
    }
    // 求最大連續子序列和
    res = dp[0];
    for(i=1; i<T; ++i) {
        if(dp[i] < res) {
            res = dp[i];
        }
    }
    printf("%d\n", res);        // 輸出
    return 0;
}

4-1.png
4-2.png
4-3.png
4-4.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章