`
godfrey90
  • 浏览: 54739 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

7th_F

阅读更多
这道题目的解题思路是动态规划,通过N和K进行状态转移
#include <cstdio>
#include <cmath>
int a[40][900];
int n,k;
void work(){
	a[1][1]=1;
	for(int i=2;i<=n;i++){
		for(int j=0;j<=(i+1)*i/2;j++){
			a[i][j]=0;
			if((i+j)<=(i-1)*i/2){
				a[i][j]+=a[i-1][i+j];
			}
			if(j!=0){
				if(i>=j)
					a[i][j]+=a[i-1][i-j];
				if(i<=j)
					a[i][j]+=a[i-1][j-i];
			}
//			printf("%d %d %d\n",i,j,a[i][j]);
		}
	}
}
int main(){
	scanf("%d%d",&n,&k);
	if(k>(n+1)*n/2){
		printf("0\n");
	}else{
		work();
		printf("%d\n",a[n][k]);
	}
	return 0;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics