做盗版小说网站赚钱嘛,网站的seo后台怎么做,重新建网站需要转域名吗,巴中市城乡和住房建设局网站Problem Description平面上有n条直线#xff0c;且无三线共点#xff0c;问这些直线能有多少种不同交点数。比如,如果n2,则可能的交点数量为0(平行)或者1(不平行)。Input输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n#xff08;n20#xff09;,n表… Problem Description 平面上有n条直线且无三线共点问这些直线能有多少种不同交点数。 比如,如果n2,则可能的交点数量为0(平行)或者1(不平行)。 Input 输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数nn20,n表示直线的数量. Output 每个测试实例对应一行输出从小到大列出所有相交方案其中每个数为可能的交点数,每行的整数之间用一个空格隔开。 Sample Input 2 3 Sample Output 0 1 0 2 3 题目看起来很水思路其实很简单不过也需要非常严谨的思路才能想对。。。。 首先n条线段全部平行0 n-1条线段平行n-1 n-2条线段平行2*(n-2)2条线段的交点数 n-3条线段平行3*(n-3)3条线段的交点数 n-4条线段平行4*(n-4)4条线段的交点数 ……………………………… 以此类推 上面我写的 “2条线段的交点数” 这个部分需要注意恰好是我们可以记录下来的前面的数据所以我们得先打个表打表记录每一种情况然后后面再来用到前面的数据所以采取dp[i][j]的方式来记录注意dp[i][j]只是状态表示表示n为i的时候j如果是可能的交点数则dp[i][j]1,否则dp[i][j]0;这个题自己思考一下很容易的。 最后注意格式pe了两次唉输出方法问题啊 #includeiostream
#includestdio.h
#includestring.h
#includealgorithm
using namespace std;
bool dp[21][200]{{0}};
int main()
{for(int i1;i21;i)dp[i][0]1;int k;for(int i2;i21;i){for(k1;ki;k){for(int j0;j200;j){if(dp[k][j]1)dp[i][k*(i-k)j]1;}}}
/*for(int i1;i21;i){for(int j0;j50;j)
{if(dp[i][j]1)coutj ;// else cout ;
}coutendl;}*/int n;int s[200];while(cinn){int m0;for(int i0;i200;i)if(dp[n][i])s[m]i;couts[0];for(int i1;im;i)cout s[i];coutendl;}return 0;
}转载于:https://www.cnblogs.com/martinue/p/5490516.html