#include<bits/stdc++.h>
using namespace std;
int f[8] = {0,1,1,1,1,1,1};
int main()
{
int n;
cin >> n;
for(int i = 1;i <= n;i++)
for(int j = 1;j < i;j++){
//cout<<f[i]<<" "<<f[j]<<"\n";
f[i] += f[j];
}
cout<<f[n]<<"\n";
return 0;
}
2.
#include<bits/stdc++.h>
using namespace std;
int v[7] = {0,1,5,10,20,50,100};
long long f[10005];
int main()
{
int n;
cin >> n;
f[0] = 1;
for(int i = 1;i <= 6;i++)
for(int j = v[i];j <= n;j++)
f[j] += f[j-v[i]];
cout<<f[n]<<"\n";
return 0;
}
3.
leetcode 84. Largest Rectangle in Histogram
栈:
#include<bits/stdc++.h>
using namespace std;
int h[10005];
int main()
{
int n;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
scanf("%d",&h[i]);
h[n+1] = 0;
stack<int> s;
s.push(1);
long long maxn = 0;
for(int i = 2;i <= n+1;i++)
{
while(!s.empty() && h[i] < h[s.top()])
{
int pos = s.top();
s.pop();
if(s.empty())
maxn = max(maxn,h[pos]*i*1ll);
else
maxn = max(maxn,h[pos]*(i-s.top()-1ll));
}
s.push(i);
}
printf("%lld\n",maxn);
return 0;
}
dp:
4.
#include<bits/stdc++.h>
using namespace std;/*
int nxt[55] = {-1};
char p[55],s[55];
void get(int m)
{
int i = 0,j = -1;
while(i < m)
{
if(j == - 1 || p[i] == p[j])
nxt[++i] = ++j;
else
j = nxt[j];
}
}
bool kmp(int m,int n)
{
int i = 0,j = 0;
while(i < n)
{
if(j == -1 || s[i] == p[j])
i++,j++;
else
j = nxt[j];
if(j == m)
return true;
}
return false;
}*/
int main()
{
string p,s;
getline(cin,p);
getline(cin,s);
int lenp = p.length();
int lens = s.length();
int maxn = 0;
if(lenp > lens)
swap(p,s),swap(lenp,lens);
for(int i = 0;i < lenp;i++)
for(int j = i;j < lenp;j++)
if(s.find(p.substr(i,j-i+1)) != -1)
maxn = max(maxn,j-i+1);
cout<<maxn<<"\n";
return 0;
}