• 售前

  • 售后

热门帖子
入门百科

河南农业大学冬令营第23组题解[搜索专题]

[复制链接]
15155324777 显示全部楼层 发表于 2022-1-15 18:22:08 |阅读模式 打印 上一主题 下一主题
 A - 棋盘问题

  1. <code>#include <bits/stdc++.h>
  2. using namespace std;
  3. int ans=0;//最终方案数
  4. int h0,qi0;
  5. char map0[10][10];
  6. int book[10];
  7. void dfs(int h1,int qi1)//h1是变化的行
  8. {
  9.         if(qi1==0||h1==h0){  if (qi1== 0)ans++; return ;}//如果棋下完了或棋下到了最后一行,则说明为最底层,则返回上一层
  10.                                             //ans是全局,可以被反馈给每一层
  11.        
  12.         else//下棋
  13.         { for(int i=0;i<h0;i++)
  14.          { if(book[i]==0&&map0[h1][i]=='#')
  15.             { book[i]=1;//放置棋子并标记
  16.                   dfs(h1+1,qi1-1);//向下一行,棋子少1个
  17.                   book[i]=0;//撤销标记,拿走棋子,以应对世界线分支
  18.                 }
  19.                 
  20.             }
  21.            dfs(h1+1,qi1);//在回朔流中重放棋子,展开分支世界线       
  22.            return ;//支路世界线的结束与反馈
  23.         }
  24.        
  25. }
  26. int main()
  27. {
  28.   while(cin>>h0>>qi0 && !(h0==-1&&qi0==-1))
  29.   {
  30.    for(int i=0;i<h0;i++)
  31.    { for(int j=0;j<h0;j++)
  32.      {
  33.              cin>>map0[i][j];
  34.      }
  35.    }
  36.        
  37.         dfs(0,qi0);//最开始从第0行开始,到h0-1行结束
  38.        
  39.         cout<<ans<<endl;
  40.          ans=0;memset(book, 0, sizeof(book));//重置
  41.        
  42.   }       
  43. }
复制代码
D - 自然数拆分

[code]#includeusing namespace std;int n,cnt=1, m;;int p[1000]={1}; void cout1(int a){   cout

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作