数学:洛谷P2789 直线交点数
等于说在求n=a+b+c+d+...(a<=b<=c...)的划分数,其中abcd各是某组平行线的数量,它们两两不平行。
数据规模比较小,直接递归求就行,thre是threshold的缩写,阈值
#include<bits/stdc++.h> using namespace std; bool ans[1003],t; void f(int x,int s,int thre){//4=1+1+1+1=2+1+1=2+2=3+1=4 if(x<0) return; if(x==1||x==0) ans[s]=true; else{ for(int i=thre;i>=1;i--){//枚举该种平行线数量 f(x-i,i*(x-i)+s,i); } } } int main(){ int n,i,j,s; memset(ans,0,sizeof(ans)); cin>>n;s=0; f(n,0,n); for(i=0;i<=1000;i++) if(ans[i]) s++; cout<<s; return 0; }

浙公网安备 33010602011771号