[语言月赛 202403] 2014

· · 题解

Source & Knowledge

2024 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。

题目大意

定义 2014 串为一个由若干个 2014 首尾相接连成的字符串,给定一个仅包含从 09 的数字的字符串 S,每次操作可以交换 S 中任意两个字符。判断是否能通过执行任意多次操作将 S 变为 2014 串。

题目分析

考察数组和循环结构的应用。

使用数组 a 统计字符串 S 中每个数字出现的次数。如果 2 0 1 4 四个数字的出现次数相等且没有出现过其他数字则说明可以将 S 变为 2014 串。

cin>>n>>s;
for(int i=0;i<n;i++) a[s[i]-'0']++;
bool fail=0;
for(int i=0;i<10;i++) if(i!=2&&i!=0&&i!=1&&i!=4&&a[i]!=0) fail=1;
if(a[2]!=a[0]||a[0]!=a[1]||a[1]!=a[4]) fail=1;
if(fail) cout<<"No"<<'\n';
else cout<<"Yes"<<'\n';

视频讲解

完整代码见视频题解