华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
123
返回列表 发新帖
楼主: admin
打印 上一主题 下一主题

202003 pmn的变形使用讲课

[复制链接]

0

主题

11

帖子

61

积分

注册会员

Rank: 2

积分
61
21#
发表于 2020-5-9 20:54:14 | 只看该作者
  1. #include <iostream>
  2. using namespace std;
  3. int n,x,a[20]= {0,1,2};
  4. void pr()
  5. {
  6.         if (a[n]==100)
  7.                 {
  8.                         for(int i=1; i<=n; i++)
  9.                                 cout<<a[i]<<' ';
  10.                         cout<<endl;
  11.                         n--;///精妙的一句!!!
  12.                 }
  13. }
  14. bool canp(int i,int k)
  15. {
  16.         bool b=0;
  17.         for(int j1=1; j1<=i-1; j1++)
  18.                 for(int j2=1; j2<=i-1; j2++)
  19.                         if (a[j1]+a[j2]==k) b=1;
  20.         return b;
  21. }
  22. void dfs(int i)   /// 找第i个数
  23. {
  24.         if(i>=n+1)        pr();
  25.         else
  26.                 for(int k=a[i-1]+1; k<=2*a[i-1]; k++)
  27.                         if(canp(i,k))
  28.                                 {
  29.                                         a[i]=k;
  30.                                         dfs(i+1);
  31.                                 }
  32. }
  33. int main()
  34. {
  35.         x=100;
  36.         n=20;
  37.         dfs(3);
  38.         return 0;
  39. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-12-24 11:40 , Processed in 0.092468 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表