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

    2928 你缺什么

    题目描述 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。数据由随机数产生。

    深搜、回溯

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int a[10001],tot,n,ans[10001];
    bool v[10001];
    void dfs(int front,int s,int tot)//front前一个位置,s这次要排第几个,tot一共排了几个 
    {
        if(tot==n) 
        {
            for(int i=1;i<=n;i++) printf("%d ",ans[i]);
            exit(0);
        }
        for(int i=1;i<=n;i++)
        {
            if(a[i]!=a[front]&&!v[i])
            {
                ans[s]=i;
                v[i]=true;
                dfs(i,s+1,tot+1);
                v[i]=false;
            }
        }
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        dfs(0,1,0);
    }

    刚开始做没有回溯,忽略了情况:1、3、2、2.数据比较水,这样得了90.。。。。。

  • 相关阅读:
    函数-列表生成式
    函数-闭包
    函数-参数
    函数-装饰器
    函数-函数递归
    函数-高阶函数
    函数-命名空间
    函数-匿名函数
    模块-shutil
    在 Android 5.1.1 执行 remount system failed 解决方法
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6220693.html
Copyright © 2011-2022 走看看