• B. Ugly Pairs(简单dfs)


      题目链接:

    https://codeforces.com/problemset/problem/1156/B

    题目大意:

    给你一个字符串,然后你可以重新对这个字符串的元素进行排序,使得新获得的字符串不存在相邻的asci相差为1.a和z的差值不是1

    具体思路:

    暴力搜索,按照字典树的构图方式去搜索。

    注意点:对答案数组每一次清空,memset(ans,'',sizeof(ans));否则测试长度的时候会保留上册的信息。

    AC代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 # define inf 0x3f3f3f3f
     4 # define ll_inf (1ll<<60)
     5 # define ll long long
     6 const int maxn = 200;
     7 char str[maxn];
     8 char ans[maxn];
     9 int a[30],flag,len;
    10 void dfs(int num,char tmp[])
    11 {
    12     if(flag)
    13         return ;
    14     if(num==len)
    15     {
    16         flag=1;
    17         for(int i=0; i<num; i++)
    18         {
    19             ans[i]=tmp[i];
    20         }
    21         return ;
    22     }
    23     for(int i=0; i<26; i++)
    24     {
    25         if(a[i]&&(num==0||(abs(tmp[num-1]-('a'+i))!=1)))
    26         {
    27             int t=num;
    28             int cnt=a[i];
    29             for(int j=1; j<=cnt; j++)
    30             {
    31                 tmp[t++]='a'+i;
    32           //      cout<<tmp[t-1]<<endl;
    33             }
    34             a[i]=0;
    35             dfs(t,tmp);
    36             a[i]=cnt;
    37         }
    38     }
    39 }
    40 int main()
    41 {
    42     int T;
    43     scanf("%d",&T);
    44     while(T--)
    45     {
    46         scanf("%s",str);
    47         memset(a,0,sizeof(a));
    48         memset(ans,'',sizeof(ans));
    49       //  memset(tmp,'',sizeof(tmp));
    50         len=strlen(str);
    51         for(int i=0; i<len; i++){
    52             a[str[i]-'a']++;
    53         }
    54         flag=0;
    55         char tmp[110];
    56         dfs(0,tmp);
    57         if(strlen(ans)!=len)
    58             printf("No answer
    ");
    59         else
    60             printf("%s
    ",ans);
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    第一次上机作业
    第一次java作业
    软件测试作业
    2021年的第一次作业
    Android作业----------------------购物车3.0
    Android作业----------------intent2.0
    Android作业----------------listview1.0
    Android-------------------数据存储
    Android--------------------跳转与数据传递
    Android----------PopWindow
  • 原文地址:https://www.cnblogs.com/letlifestop/p/10946254.html
Copyright © 2020-2023  润新知