(c++)如何有效地生成升序序列(dyn. solution)
(c++) How to effectively make ascending sequences (dyn. solution)
我目前正在尝试制作一个涉及升序序列的程序。N为序列的大小,K为最大值,例如
输入:2、3
输出:6(1,1 - 1、2 - 1、3 - 2、2 - 2、3 - 3、3)
我当前的代码输出正确的答案,但是它需要太多的时间来得到正确的答案。这个问题最快的解是什么我怎么做动力学解?下面是缓慢解决方案的代码:
#include<iostream>
using namespace std;
int n,k,cnt=0,mod=1000000007;
int seq(int n, int k, int first, int depth){
if(depth > n){
cnt = cnt + 1;
return cnt;
}
else {
for(int i=first;i<=k;i++){
seq(n,k,i,depth+1);
}
}
return cnt;
}
int main()
{
cin>>n>>k;
cout<<seq(n,k,1,1)%mod<<"n";
return 0;
}
我已经用动态规划解决了这个问题。
#include<bits/stdc++.h>
#define up(j,k,i) for(i=j;i<k;i++)
#define down(j,k,i) for(i=j;i>k;i--)
#define pp(n) printf("%lldn",n)
#define is(n) scanf("%lld",&n)
#define ips(n) scanf("%lld",n)
#define ss(s) scanf("%s",s)
#define cool 0
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define f(i) cout<<i<<endl;
#define pll pair<lld,lld>
#define pi acos(-1)
#define ds(n,m) scanf("%lld %lld",&n,&m)
#define ts(n,m,k) scanf("%lld %lld %lld",&n,&m,&k)
typedef long double ld;
typedef long long int lld;
using namespace std;
const lld M =1e3+7;
const lld mod=1e9+7;
const lld infi =LLONG_MAX;
lld i,j,ans,k,n,x,y,m,mymax=LLONG_MIN,mymin=LLONG_MAX,b,c,z,sum;
lld dp[M][M],s[M][M];
int main()
{
lld n,k;
ds(n,k);
up(1,k+1,i)
{
s[1][i]=1+s[1][i-1];
}
up(2,n+1,i)
{
up(1,k+1,j)
{
s[i][j]=s[i][j-1]+s[i-1][j];
}
}
pp(s[n][k]);
return 0;
}
可以在1..K
范围内从M开始计数序列S(M)
:
假设你有一个N等数的序列M, M, M, M, M (N times)
要生成非降序序列,可以使用L = 0..K-M
1来递增序列成员(以及所有后续数字)。例如,使用两个1,您可以使有效序列M, M, M+1, M+1, M+2
。请注意,C(L-1, N-1)
变体可以做到这一点(您可以在L-1个点之间插入N-1条垂直线…|…|…)
S(M) = Sum{L=0..K-M} (C(L-1,N-1))
和
A(N, K) = Sum{M=1..K}(S(M))
相关文章:
- 苹果事业部CSES Qustion Solution.
- Calling Python Script from Visual Studio C++ Solution
- CMake Visual Studio Solution Setup
- 使用RCPP包创建R包时出错:macOS中的dyn.load中出错
- Visual Studio Solution Dependencies
- 错误:参数太少,无法函数"int Solution(std::vector<int>, int)"
- 在shared_from_this()中的错误类型(在继承类中)(是否有dyn.type-ware shared Poi
- R dyn.load "Symbol not found"错误,即使C++代码构建良好
- 无法使用 dyn.load windows 7 64 位在 R 中加载 dll 文件
- 将包与Rcpp链接时发生dyn.load错误
- std::string append thread safe naive solution?
- (c++)如何有效地生成升序序列(dyn. solution)
- 编译错误:solution.c:20:5: Error:期望的标识符或'('在' {' token{之前
- 在 Visual Studio 2010 C/C++ 中,"Rescan Solution"操作有什么作用?
- R: Error in dyn.load(file, DLLpath = DLLpath, ...)