头像

gunslinger


访客:630

离线:8小时前


活动打卡代码 AcWing 282. 石子合并

gunslinger
1个月前
#include<iostream>
#include<algorithm>

using namespace std;

const int N = 310;

int n;
int s[N];
int f[N][N];

int main()
{
    scanf("%d" , &n);
    for(int i = 1; i <= n; i ++) scanf("%d", &s[i]);

    for(int i = 1; i <= n; i ++) s[i] += s[i - 1];

    for(int len = 2; len <= n; len ++)
        for(int i = 1; i + len - 1 <= n; i++)
        {
            int l = i , r = i + len - 1;
            f[l][r] = 1e8;
            for(int k = l; k <= r; k ++)
                f[l][r] = min(f[l][r] , f[l][k] + f[k + 1][r] + s[r] - s[l - 1]);
        }
        printf("%d" , f[1][n]);
        return 0;

}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



gunslinger
1个月前
#include<iostream>
#include<algorithm>

using namespace std;

const int N = 1010;

int n;
int a[N] , f[N];

int main()
{
    scanf("%d" , &n);
    for(int i = 1 ; i <= n; i++) scanf("%d" , &a[i]);

    for(int i = 1; i <= n; i++) 
    {
        f[i] = 1;
        for(int j = 1; j <= i; j++)
            if(a[j] < a[i])
                f[i] = max(f[i] , f[j] + 1);
    }

    int res = 0;
    for(int i = 1; i <= n; i++) res = max(res , f[i]);
    printf("%d" , res);
    return 0;
}

//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 898. 数字三角形

gunslinger
1个月前
#include<iostream>
#include<algorithm>

using namespace std;

const int N = 510 , INF = 1e9;

int n ;
int a[N][N];
int f[N][N];

int main()
{
    scanf("%d", &n);
    for(int i = 1; i <= n ; i++)
        for(int j = 1; j <= i ; j++)
            scanf("%d",&a[i][j]);


    for(int i = 0; i <= n; i++)
        for(int j = 0; j <= i+1; j++)
            f[i][j] = -INF;

    f[1][1] = a[1][1];

    for(int i = 2; i <= n ; i++)
        for(int j = 1; j <= i ; j++)
            f[i][j] = max(f[i - 1][j - 1] + a[i][j] , f[i - 1][j] + a[i][j]);

    int res = -INF;        
    for(int i = 1 ; i <= n; i++) res = max(res, f[n][i]);

    printf("%d\n" , res);
    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



gunslinger
1个月前
class Solution {
public:
    vector<int> findNumbersWithSum(vector<int>& nums, int target) {
        unordered_set<int> S;
        for(auto x : nums)
        {
            if(S.count(target - x)) return{x , target - x};
            S.insert(x);
        }
    }
};
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



gunslinger
1个月前
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *findFirstCommonNode(ListNode *headA, ListNode *headB) {
        auto p = headA,q = headB;

        while(p != q)
        {
            if(p) p = p->next;
            else p = headB;

            if(q) q = q->next;
            else q = headA;


        }

        return p;
    }
};
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



gunslinger
1个月前
class Solution {
public:
    string replaceSpaces(string &str) {
        string res;
        for(auto c : str)
        {
            if(c == ' ') res += "%20";
            else res += c; 
        }
        return res;
    }
};
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 16. 替换空格

gunslinger
1个月前
class Solution {
public:
    string replaceSpaces(string &str) {
        string res;
        for(auto c : str)
        {
            if(c == ' ') res += "%20";
            else res += c; 
        }
        return res;
    }
};
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 21. 斐波那契数列

gunslinger
1个月前
class Solution {
public:
    int Fibonacci(int n) {
        if(n <= 1) return n;
        else return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
};
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 816. 数组翻转

gunslinger
1个月前
#include<iostream>

using namespace std;


void reverse(int a[], int size)
{
    for(int i = 0, j = size - 1; i < j; i++ , j --)
    swap(a[i], a[j]);
}
int main()
{
    int a[1000];
    int n , size;
    cin >> n >> size;
    for(int i = 0; i < n; i ++) cin >> a[i];

    reverse(a , size);

    for(int i  = 0; i < n ; i ++) cout << a[i] << ' ';

    return 0;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~


活动打卡代码 AcWing 822. 走方格

gunslinger
1个月前
#include <iostream>

using namespace std;

int f(int n, int m) // f(n,m)表示到达n,m点的方案数
{
    if(m == 0 || n == 0) return 1;//在左界或上界时 只能由一个方向接受所到来的点 所以方案数为1
    return f(n - 1, m) + f(n, m - 1);// (n,m)点可由上边或者左边接收到 固加方案数即为到达上边点与左边点的和
}

int main()
{
    int n, m;
    cin >> n >> m;
    cout << f(n,m) << endl;//f(n,m)即是答案
    return 0;
}

//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~