1006. Team Rankings

来源:互联网 发布:2016 fc2视频最新域名 编辑:程序博客网 时间:2024/06/16 22:39

转 http://blog.csdn.net/ederick/article/details/7226807

和http://www.w3c.com.cn/sicily-1006-team-rankings

这题虽然大概懂意思,但还是不太懂那些数字怎么来的。找些感觉不错的代码先mark

#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){    int n;    int i, j, k;    int min;    string info;    string ranking[ 120 ];    string s = "ABCDE";    ranking[ 0 ] = s;    for ( i = 1; next_permutation( s.begin(), s.end() ); i++ )        ranking[ i ] = s;    while ( cin >> n && n ) {        int value[ 120 ] = { };         while ( n-- ) {            cin >> info;            for ( i = 0; i < 120; i++ ) {                for ( j = 0; j < 5; j++ ) {                    for ( k = j + 1; k < 5; k++ ) {                        if ( info.find( ranking[ i ][ j ] ) > info.find( ranking[ i ][ k ] ) )                            value[ i ]++;                    }                }            }        }        min = 0;        for ( i = 1; i < 120; i++ ) {            if ( value[ min ] > value[ i ] )                min = i;        }        cout << ranking[ min ] << " is the median ranking with value " << value[ min ] << ".\n";    }    return 0;}                                 
#include <iostream>#include <string>#include <algorithm>using namespace std;int main(int argc, char const *argv[]){   int n,len = 5;   string str[100];   int pos[6];   while(cin >> n,n)     {      string ans;      for(int i = 0; i < n; i++)        cin >> str[i];      char next[] = "ABCDE";      int min = 10000;      do       {        for(int i = 0; i < len; i++)          pos[next[i]-'A'] = i;        int value = 0;        for (int i = 0; i < n; ++i)        {          for(int j = 0; j < len; j++)            for(int k = j+1; k < len; k++)              if(pos[str[i][j] - 'A'] > pos[str[i][k] - 'A'])                value++;        }        if(value < min)        {          min = value;          ans = next;        }       }while(next_permutation(next,next+5));      cout << ans << " is the median ranking with value " << min << "." << endl;     }  return 0;}                                 


原创粉丝点击