ArcTan

dfs
随笔 - 16, 文章 - 117, 评论 - 6, 引用 - 0
数据加载中……

SRM550 DIV2 250PT(字符串水题)

Problem Statement

     We have a string originalWord. Each character of originalWord is either 'a' or 'b'. Timmy claims that he can convert it to finalWord using exactly k moves. In each move, he can either change a single 'a' to a 'b', or change a single 'b' to an 'a'.

You are given the strings originalWord and finalWord, and the int k. Determine whether Timmy may be telling the truth. If there is a possible sequence of exactly k moves that will turn originalWord into finalWord, return "POSSIBLE" (quotes for clarity). Otherwise, return "IMPOSSIBLE".

Definition

    
Class: EasyConversionMachine
Method: isItPossible
Parameters: string, string, int
Returns: string
Method signature: string isItPossible(string originalWord, string finalWord, int k)
(be sure your method is public)
    

Notes

- Timmy may change the same letter multiple times. Each time counts as a different move.

Constraints

- originalWord will contain between 1 and 50 characters, inclusive.
- finalWord and originalWord will contain the same number of characters.
- Each character in originalWord and finalWord will be 'a' or 'b'.
- k will be between 1 and 100, inclusive.

Examples

0)
    
"aababba"
"bbbbbbb"
2
Returns: "IMPOSSIBLE"
It is not possible to reach finalWord in fewer than 4 moves.
1)
    
"aabb"
"aabb"
1
Returns: "IMPOSSIBLE"
The number of moves must be exactly k=1.
2)
    
"aaaaabaa"
"bbbbbabb"
8
Returns: "POSSIBLE"
Use each move to change each of the letters once.
3)
    
"aaa"
"bab"
4
Returns: "POSSIBLE"
The following sequence of 4 moves does the job:
aaa -> baa -> bab -> aab -> bab
4)
    
"aababbabaa"
"abbbbaabab"
9
Returns: "IMPOSSIBLE"

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.


字符串水题!

249.23PT!!!

#include <cstdio>
#include 
<cstdlib>
#include 
<cstring>
#include 
<cmath>
#include 
<ctime>
#include 
<cassert>
#include 
<iostream>
#include 
<sstream>
#include 
<fstream>
#include 
<map>
#include 
<set>
#include 
<vector>
#include 
<queue>
#include 
<algorithm>
#define min(x,y) (x<y?x:y)
#define max(x,y) (x>y?x:y)
#define swap(t,x,y) (t=x,x=y,y=t)
#define clr(list) memset(list,0,sizeof(list))

using namespace std;

class EasyConversionMachine{
public:
    
string isItPossible(string originalWord, string finalWord, int k)
    {
        
int n=originalWord.size();
        
int tot=0;
        
for (int i=0;i<n;i++)
            
if (originalWord[i]!=finalWord[i])
                tot
++;
        
if (tot<=&& (k-tot)%2==0) //傻叉,这里刚刚开始搞反了,testing WA了一次
            
return "POSSIBLE";
        
return "IMPOSSIBLE";
    }
};

posted on 2012-07-22 10:02 wangs 阅读(206) 评论(0)  编辑 收藏 引用 所属分类: ACM-水题Topcoder


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理