gunslinger

gunslinger
4个月前
#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
4个月前
#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;
}

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


gunslinger
4个月前
#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
5个月前
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
5个月前
/**
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:

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

if(q) q = q->next;

}

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


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


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


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


gunslinger
5个月前
#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;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间，才可以正确显示代码高亮哦~


gunslinger
5个月前
#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;
}

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