Код:
#include <iostream>
#include <vector>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <map>
bool IsAnagram( const std::string &left, const std::string &right ){
if( left.size( ) != right.size( ) )
return 0;
for( int i = 0; i < left.size( ); ++i )
if( std::count( left.begin( ), left.end( ), left[ i ] )
!= std::count( right.begin( ), right.end( ), left[ i ] ) )
return 0;
return 1;
}
bool IsHaveAnagram( const std::string &str, const std::vector< std::string > &vec ){
for( int i = 0; i < vec.size( ); ++i )
if( vec[ i ] != str && IsAnagram( str, vec[ i ] ) )
return 1;
return 0;
}
int main(){
std::ifstream in( "in.txt" );
std::vector< std::string > source;
if( in )
source.assign( std::istream_iterator< std::string >( in ), std::istream_iterator< std::string >() );
in.close();
for( std::vector< std::string >::iterator i = source.begin( ); i != source.end( ); ++i )
if( !IsHaveAnagram( *i, source ) ){
i = source.erase( i );
--i;
}
std::ofstream out( "out.txt" );
std::copy( source.begin(), source.end(), std::ostream_iterator< std::string >( out, "\n" ) );
out.close();
}
хи