1425: Careless Tony
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 92 Solved: 29
[ Submit][ Status][ Web Board]
Description
Tony is such a careless typist that he finds himself making mistakes AGAIN. What's worse, the cursor key is not working so that he can only use the backspace key to reach the place where the mistake is, and then type whatever he's deleted on the way AGAIN :(
Now let's help Tony find out at least how long it will cost him to correct his mistake.
Input
The first line of input contains an integer N, which is the number of test cases. Then N test cases follow.
Each test case consists of 3 lines of input:
the 1st line contains a positive integer t (<= 100), which is the time taken for Tony to delete/input a character;
the 2nd line contains the correct content of text;
and the 3rd line contains the text typed by Tony.
Note: The text contents contain only the readable characters. The total length of each text is no longer than 80 characters.
Output
For each test case, print in one line the minimal time taken for Tony to correct his mistake.
Sample Input
Sample Output
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n,t;
string s1,s2;
int flag;
int p;
cin>>n;
while(n--)
{
cin>>t;
cin>>s1>>s2;
flag=1;
p=0;
for(int i=0;i<s1.size()&&i<s2.size();i++)
{
if(s1[i]!=s2[i])//寻找第一个不相同的字符串
{
flag=0;//判断字符是否相同
p=i;
break;
}
}
if(flag)//字符都相同的话
{
if(s1.size()>=s2.size())
{
cout<<t*(s1.size()-s2.size())<<endl;//第一个字符串的长度减去第二个字符串的长度表示还有多少个字符
}
else
{
cout<<(s2.size()-s1.size())*t<<endl;//还需要删除多少个字符
}
}
else
{
cout<<(s1.size()+s2.size()-2*p)*t<<endl;//表示的是我们先删除,然后再变成和第一个字符串一样的字符串
}
}
return 0;
}