数字游戏

来源:互联网 发布: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
原创粉丝点击