数字游戏
来源:互联网 发布:mysql update 自关联 编辑:程序博客网 时间:2024/05/17 21:56
http://codevs.cn/problem/1229/
应该是DFS,需要标记数字的使用状态,还要标记符合题目要求的最小的那个值,适时的退出程序。
#include<iostream>#include<stdio.h>#include<cmath>#include<string.h>#include<map>#include<queue>#include<algorithm>using namespace std;int n,m;int t,k;int shuzi[10]={0};int zhuangtai[10]={0};int shiyongqingkuang[10]={0};int temptemp; bool flag=true;void dfs(int weizhi){ if (flag) { /* code */ if(weizhi==n&&flag) { int temp=0; for (int i = 0; i < n; ++i) { /* code */ temp=temp*10+zhuangtai[i]; } if (((temp+t)%k)==0) { /* code */ temptemp=temp; flag=false; } } for (int i = 0; i < n; ++i) { /* code */ if (shiyongqingkuang[i]==0&&flag) { /* code */ shiyongqingkuang[i]=1; zhuangtai[weizhi]=shuzi[i]; dfs(weizhi+1); shiyongqingkuang[i]=0; } } }}int main(){ cin>>n>>m; for (int i = 0; i < n; ++i) { /* code */ cin>>shuzi[i]; } for (int i = 0; i < m; ++i) { /* code */ flag=true; temptemp=0; cin>>t>>k; dfs(0); if (temptemp) { /* code */ cout<<temptemp<<endl; }else { cout<<"None"<<endl; } } return 0;}
0 0