UVa 1588 Kickdown
来源:互联网 发布:什么软件有烟雾 编辑:程序博客网 时间:2024/06/06 01:27
问题:在平面上模拟两个变速齿轮的咬合,为了能在一块最短的合金上割出这两个齿轮,需要将两个齿轮的序列进行匹配。
输入:一串字符表示底部齿轮(master),1表示凹陷,2表示牙凸
一串字符表示上部齿轮(driven),1表示凹陷,2表示牙凸
输出:将两个字符串进行匹配,输出至少需要多长的合金板才能切出这两个齿轮
思路:从底部字符串开始,寻找一个与上部字符串匹配的子串,如果没找到则一直后移。
过程:①从底部字符串的第一个字符开始,寻找与上部字符串匹配的子串
②如果第一个字符不匹配,则顺序延伸。
③如果最后匹配到的位置小于底部字符串的大小,则长度为底部字符串;
④如果匹配到的配置长于底部字符串,则长度为底部字符串开始匹配的位置+顶部字符串的长度;
#include <iostream>#include <string>using namespace std;int lcompute(const string &master, const string &driven){for (string::const_iterator iter = master.begin(); iter != master.end(); ++iter) {for (string::const_iterator m = iter, d = driven.begin(); m < master.end() && d < driven.end();++m, ++d) {if (*m != *d || *m == '1') {// 两个凹处也可以贴合,太粗心了if ((m + 1) == master.end())return master.size() + (driven.end() - d - 1 );else if ((d + 1) == driven.end())return master.size();elsecontinue;}//endifelsebreak;}//endfor}//endforreturn master.size() + driven.size();}int main(){#ifndef UVaFILE *fp;freopen_s(&fp, "data.in.txt", "r", stdin);freopen_s(&fp, "data.out.txt", "w", stdout);#endifstring bottom;string up;int lbtm = 0;int lup = 0;while (cin >> bottom >> up) {lbtm = lcompute(bottom, up);lup = lcompute(up, bottom);if (lbtm > bottom.size() + up.size())cout << "error" << endl;if (lup > bottom.size() + up.size())cout << "error" << endl;if (lbtm < lup)cout << lbtm << endl;elsecout << lup << endl;} return 0;}
0 0
- uva 1588Kickdown
- Kickdown UVa 1588
- UVa 1588 - Kickdown
- UVa 1588 - Kickdown
- UVa 1588 Kickdown
- UVA - 1588 Kickdown
- UVA - 1588 Kickdown
- UVa 1588 - Kickdown
- UVa-1588Kickdown
- UVA - 1588 Kickdown
- Uva - 1588 - Kickdown
- UVA-1588 Kickdown
- UVA 1588 Kickdown
- UVa 1588 kickdown
- uva 1588 - Kickdown
- UVA - 1588 Kickdown
- UVA - 1588 Kickdown
- UVa 1588 Kickdown
- adb logcat Tag 过滤
- Nginx相关指令及配置
- Tomcat Manager用户配置详解
- Ubuntu12编译FreeRDP
- Android Studio 使用统计代码插件
- UVa 1588 Kickdown
- 远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
- 【Android基础】六、Fragment
- 每天一个linux命令(58):telnet命令
- Android群英传读书笔记第八章(Activity与Activity调用栈分析)
- 用HTML实现课程表
- 关于javascript中Object.prototype.toString 可以被改变指向的问题
- 网站被挂木马了,假的,js从那儿出来的
- Android应用签名