U535982 J-A 小梦的AB交换 题解

打印 上一主题 下一主题

主题 1927|帖子 1927|积分 5781

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小梦的AB交换

小梦的AB交换 标题链接
一道字符串贪婪的题,可以先暴力求出 N<=3的情况(纸上模仿一遍就行)
正解具体解释:
思路:有两种可能 1.ABABAB… 2.BABABA…
根据标题我们需要求出最少进行的操作次数,我们需要统计有多少字符是不相当的,再用总的不相当个数除以每两个交换的数目,即可得到相应交换次数
废话不多说,上代码!
  1. //暴力写法 45pts
  2. // #include<bits/stdc++.h>
  3. // using namespace std;
  4. // int main()
  5. // {
  6. //     int t = 1;cin>>t;
  7. //     int n;cin>>n;
  8. //     if(n == 1)cout<<0<<"\n";
  9. //     if(n == 2)cout<<1<<"\n";
  10. //     if(n == 3)cout<<1<<"\n";
  11. //     return 0;
  12. // }
  13. //思路:有两种可能 1.ABABAB...  2.BABABA...
  14. //根据题目我们需要求出最少进行的操作次数,我们需要统计有多少字符是不相等的,再用总的不相等个数除以每两个交换的数量
  15. //即可得到相应交换次数
  16. #include<bits/stdc++.h>
  17. using namespace std;
  18. int jisuan(string &s,string &substr1)
  19. {
  20.     int ans = 0;
  21.     for(int i = 0;i < s.size();i++)
  22.     {
  23.         if(s[i] != substr1[i])
  24.         {
  25.             ans += 1;
  26.         }
  27.     }
  28.     return ans / 2;
  29. }
  30. int main()
  31. {
  32.     ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  33.     int t;cin>>t;
  34.     string a,b,s;
  35.     while(t--)
  36.     {
  37.         int n;cin>>n;
  38.         cin>>s;
  39.         for(int i = 1;i <= n * 2;i++)
  40.         {
  41.             if(i % 2 == 0)
  42.             {
  43.                 a += 'A';
  44.                 b += 'B';
  45.             }else
  46.             {
  47.                 a += 'B';
  48.                 b += 'A';
  49.             }
  50.         }
  51.          cout<< min(jisuan(s,a),jisuan(s,b))<<"\n";
  52.     }
  53.    
  54.     return 0;
  55. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表