zoukankan      html  css  js  c++  java
  • codevs 2928 你缺什么

    传送门

    2928 你缺什么

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 钻石 Diamond
     
     
    题目描述 Description

    继“你幸福吗”之后,央视又推出了“你缺什么”。而在采访过程中,记者发现了一些问题。

    记者要采访n个人。已知第i个人要回答Ta缺某事物Xi,但如果Ta之前的一个人的答案和Ta一样,Ta就会改口。为了避免受访者改口,记者决定改变采访顺序。

    现在给出这n个人的答案,请输出一种可行的方案。要求该方案字典序最小。数据保证有解。

    输入描述 Input Description

    第一行,一个数n。

    接下来的n行,第i+1行为Xi。

    输出描述 Output Description

    一行,n个数,表示依次访问n个人的顺序。以空格隔开。

    样例输入 Sample Input

    10
    1
    5
    4
    1
    4
    2
    1
    3
    3
    5

    样例输出 Sample Output

    1 2 3 4 5 6 7 8 10 9 

    数据范围及提示 Data Size & Hint

    0<n<=104,0<Xi<=5。数据由随机数产生。

    【思路】深搜

    【code】

    #include<iostream>
    #include<cstdio>
    #include<cstdlib> 
    using namespace std;
    #define M 10005
    int n,ans[M],a[M],cnt,use[M];
    void dfs(int pre,int now,int all)
    {
        if(all==n){
            for(int i=1;i<=n;i++)
            printf("%d ",ans[i]);
            exit(0);
        }
        for(int i=1;i<=n;i++)
        {
            if(!use[i]&&a[i]!=a[pre])
            {
                use[i]=1;ans[now]=i;
                dfs(i,now+1,all+1);
                use[i]=0;
            }
        }
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%d",a+i);
        dfs(0,1,0);
        return 0;
    } 
  • 相关阅读:
    GitLab 介绍
    git 标签
    git 分支
    git 仓库 撤销提交 git reset and 查看本地历史操作 git reflog
    git 仓库 回退功能 git checkout
    python 并发编程 多进程 练习题
    git 命令 查看历史提交 git log
    git 命令 git diff 查看 Git 区域文件的具体改动
    POJ 2608
    POJ 2610
  • 原文地址:https://www.cnblogs.com/zzyh/p/6961866.html
Copyright © 2011-2022 走看看