博客
关于我
The Bits CodeForces - 1017B(组合数学,水)
阅读量:240 次
发布时间:2019-03-01

本文共 1385 字,大约阅读时间需要 4 分钟。

状态转换问题的代码解释

这段代码是用来解决一个典型的状态转换问题。程序通过统计输入字符串中每对字符的转移次数,计算了不同状态之间的转换次数。

代码分析

#include 
#include
#include
#include
using namespace std;typedef long long ll;const int maxn = 1e6 + 5;int main() { int n; cin >> n; string a, b; cin >> a >> b; ll num00 = 0, num01 = 0, num10 = 0, num11 = 0; for (int i = 0; i < n; ++i) { char c1 = a[i], c2 = b[i]; if (c1 == c2) { if (c1 == '0') num00++; else num11++; } else { if (c1 == '0' && c2 == '1') num01++; else if (c1 == '1' && c2 == '0') num10++; } } // 输出结果 // ...}

代码解释

1. 包含头文件

  • iostream:用于标准输入输出操作
  • string:字符串操作
  • algorithm:算法库
  • cctype:字符分类和常用字符函数

2. 定义

  • using namespace std;:导入标准库
  • typedef long long ll;:定义长长整数类型
  • const int maxn = 1e6 + 5;:定义常量,用于数组大小

3. 主函数

int main() {    int n;    cin >> n;    string a, b;    cin >> a >> b;    ll num00 = 0, num01 = 0, num10 = 0, num11 = 0;    for (int i = 0; i < n; ++i) {        char c1 = a[i], c2 = b[i];        if (c1 == c2) {            if (c1 == '0') num00++;            else num11++;        } else {            if (c1 == '0' && c2 == '1') num01++;            else if (c1 == '1' && c2 == '0') num10++;        }    }    // ...}

4. 主循环

  • 遍历每个字符对
  • 判断两个字符是否相同
    • 如果相同,根据字符值更新对应的计数器
  • 如果不同,根据具体转换关系更新计数器

5. 输出结果

  • 根据计数器值输出最终结果

这段代码通过遍历两个字符串,统计每对字符的转移次数,适用于解决状态转换类的问题。

转载地址:http://ifnt.baihongyu.com/

你可能感兴趣的文章
Openlayers实战:非4326,3857的投影
查看>>
Openlayers高级交互(1/20): 控制功能综合展示(版权、坐标显示、放缩、比例尺、测量等)
查看>>
Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
查看>>
Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
查看>>
Openlayers高级交互(12/20):利用高德逆地理编码,点击位置,显示坐标和地址
查看>>
Openlayers高级交互(13/20):选择左右两部分的地图内容,横向卷帘
查看>>
Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
查看>>
Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
查看>>
Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
查看>>
Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
查看>>
Openlayers高级交互(18/20):根据feature,将图形适配到最可视化窗口
查看>>
Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
查看>>
Openlayers高级交互(2/20):清除所有图层的有效方法
查看>>
Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
查看>>
Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
查看>>
Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
查看>>
Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
查看>>
Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
查看>>
Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
查看>>
Openlayers高级交互(8/20):选取feature,平移feature
查看>>