URAL 2046 The First Day at School(模拟)

来源:互联网 发布:java c 效率 编辑:程序博客网 时间:2024/05/18 18:54

题目链接:

URAL 2046


题目大意:

给出一个课程表,用程序画出它来


题目分析:

模拟,STL大法好,比较好调…..


AC代码:

#include <iostream>#include <cstring>#include <cstdio>#include <iomanip>#include <algorithm>#include <vector>#include <string>#define MAX 10000;using namespace std;string s;int n;int grid[10][10];int h[10];vector<string> v[20];string p[]={"Tuesday","Thursday","Saturday"};bool check ( string s1 , string s2 ){    int len1 = s1.length();    int len2 = s2.length();    if (len1 != len2 ) return false;    for ( int i = 0 ; i < len1 ; i++ )        if ( s1[i] != s2[i] ) return false;    return true;}int main ( ){    while ( ~scanf ( "%d" , &n ) )    {        memset ( grid , -1 , sizeof ( grid ));        for ( int i = 1 ; i <= n ; i++ )        {            v[i].clear();            int col,row;            cin >> s;            while ( true )            {                bool flag = false;                for ( int j = 0 ; j < 3 ; j++ )                    if ( !s.compare ( p[j] ) )                    {                        col = j+1;                        flag = true;                        break;                    }                if ( flag ) break;                else v[i].push_back ( s );                cin >> s;            }            cin >> row;            grid[row][col] = i;        }        for ( int i = 1 ; i <= n ; i++ )        {            int len = v[i].size();            int id = 0;            vector<string> temp;            string ss = "";            for ( int j = 0 ; j < len ; j++ )                if ( ss == "" )                {                    ss += v[i][j];                }                else if ( v[i][j].length() + ss.length() < 10 )                {                    ss +=" ";                    ss += v[i][j];                }                else                {                    temp.push_back ( ss );                    ss = v[i][j];                }            temp.push_back ( ss );            v[i].clear();            for ( int j = 0 ; j < temp.size() ; j++ )                v[i].push_back ( temp[j] );        }        for ( int i = 1 ; i <= 4 ; i++ )        {            h[i] = 1;        }        for ( int i = 1 ; i <= 4 ; i++ )        {            for ( int j = 1 ; j <= 3 ; j++ )                if ( grid[i][j] != -1 )                {                    int len = v[grid[i][j]].size();                    h[i] = max ( h[i] , len );                }        }        for ( int k = 1 ; k <= 4 ; k++ )        {            cout << "+----------+----------+----------+" << endl;            for ( int j = 1 ; j <= h[k] ; j++ )            {                for ( int i = 1 ; i <= 3 ; i++ )                {                    int id = grid[k][i];                    if ( id == -1 ) cout <<setw(11)<<left<<"|";                    else if ( v[id].size() < j ) cout <<setw(11)<<left<<"|";                    else cout <<left<< "|" << setw(10) << v[id][j-1];                }                cout << "|" << endl;            }        }        cout << "+----------+----------+----------+" << endl;    }}
0 0