(SOJ) Is it a word ladder? (词梯)

来源:互联网 发布:java弹球游戏 编辑:程序博客网 时间:2024/05/16 01:43

该题目的大意是:判断一串字符串是否能构成词梯(任意相连的两个字符串之间有且只有一个字母不同)。

#include <iostream>#include <cstdio>#include <cstring>#include <string> #include <vector>#include <list>#include <set>#include <queue>#include <deque>#include <map>#include <algorithm>#include <cstdlib>#include <cmath>#include <ctime>#include <iomanip>#include <fstream>using namespace std ;bool isLadder ( vector <string>& v , int m ){    for ( int i = 0 ; i < m - 1 ; i ++ )    {        string s1 = v[i] , s2 = v[i+1] ;        int dif = 0 ;        if ( s1.size() != s2.size() )            return false ;        for ( int k = 0 ; k < s1.size() ; k ++ )        {            if ( s1[k] != s2[k] )                dif ++ ;        }        if ( dif != 1 )            return false ;    }    return true ;}int main (){    int n , m ;    string s ;    cin >> n ;    while ( n -- )    {        cin >> m ;        vector <string> v ;        v.clear() ;        for ( int i = 0 ; i < m ; i ++ )        {            cin >> s ;            v.push_back( s ) ;        }        if ( isLadder ( v , m ) )             cout << "Yes" << endl ;        else            cout << "No" << endl ;    }     return 0 ;}                                 


0 0