欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

CodeForces-887B 技巧DFS

发布时间:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 CodeForces-887B 技巧DFS 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

标题

最大不超过3个筛子 让我们从其中任选筛子组合成数据 问我们组不成的最小的数是多少

分析

要模拟把最大3个筛子 选出1,2,3个的情况去组合 我们可以枚举所要选的数的数量
用next_permutation得到这n个数的全排列 这样不论的选几个筛子 都会便利到所有情况
然后在把所有情况统计一下

#include<bits/stdc++.h>using namespace std; bool bok[1010];//最大不会超过999 所以标记桶的容量就一定了 int n,a[5][10],r[10]; void dfs(int now,int lim,int sum){if(now==lim){bok[sum]=1;return;}for(int i=1;i<7;i++){dfs(now+1,lim,sum*10+a[r[now]][i]);} } int main() {scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=6;j++)scanf("%d",&a[i][j]);}for(int i=1;i<=n;i++){r[1]=1,r[2]=2,r[3]=3;do{dfs(1,1+i,0);}while(next_permutation(r+1,r+1+n));// 从第一个元素到最后一个都要选到}if(!bok[1])printf("0\n");else {for(int i=1;;i++){if(!bok[i]){printf("%d\n",i-1);break;}}}return 0; }

总结

以上是生活随笔为你收集整理的CodeForces-887B 技巧DFS的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。