Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
恳求各位大神看看我的代码或者给些测试用例,我快崩溃了,一直wa。自己试的都没问题。#include <iostream> #include <stdio.h> #include <string> #include <algorithm> using namespace std; int main(){ freopen ( "data.txt" , "r" , stdin); int team ;//组数 int row ;//每组字符串数目 int i , j , k , m ; string data [100] ; cin >> team ; for ( i = 0 ; i < team ; i ++ ){ cin >> row ; int lessLen ; //最短字符串长度 int lessNum ;//最短字符串编号 string temp , retemp ; //可能匹配的字符串、逆序字符串 //输入每组字符串 for ( j = 0 ; j < row ; j ++ ){ cin >> data [ j ] ; } //求最短字符串长度、最短字符串编号 lessLen = data[0].length();//初始时默认第一个字符串为最短字符串 lessNum = 0; for ( j = 1 ; j < row ; j ++ ){ if ( data[j].length() < lessLen){ lessLen = data[j].length(); lessNum = j ; } } //每组字符串进行处理,求出最短字符串的每个子串,分别判断与别的字符串的符合情况。 k = 0 ; m = lessLen ; for ( j = 0 ; j < row ; j ++ ){ while ( m > 0 ) { temp = data[lessNum].substr( k , m ) ; //substr第一个参数为开始序号,第二个为字符数. retemp = temp ; reverse ( retemp.begin() , retemp.end() ); if ( data[j].find ( temp ) != temp.npos || data[j].find ( retemp ) != retemp.npos ) { //找到 break; } else { if ( k + m < lessLen ){ k ++ ; } else { k = 0 ; m -- ; } } } } if ( m == 0 ){ cout << 0 << endl ; } else { cout << temp.length() << endl ; } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator