首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

HDU 4119-wa-

2012-09-24 
HDU 4119--wa--求助!!!C/C++ code#includecstdlib#includeiostream#includecstdio#includecmath#i

HDU 4119--wa--求助!!!

C/C++ code
#include<cstdlib>#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include <algorithm>#define M 18290#define N 55#define inf 0x7f7f7f7fusing namespace std;int n,m;char ma[N][N];struct point{    int x,y;};point p[N];string str[101];int cmp(const void *a,const void *b){    if((*(point *)a).x!=(*(point *)b).x)        return (*(point *)a).x-(*(point *)b).x;    return (*(point *)a).y-(*(point *)b).y;}int main(){//#ifndef ONLINE_JUDGE//    freopen("ex.in","r",stdin);//#endif    int t;    scanf("%d",&t);    int ncase=0;    while(t--)    {        scanf("%d%*c",&n);        for(int i=0; i<n; i++)        {            for(int j=0; j<n; j++)                scanf("%c",&ma[i][j]);            scanf("%*c");        }        char c;        int k=0;        for(int i=0; i<n; i++)        {            for(int j=0; j<n; j++)            {                scanf("%c",&c);                if(c=='*')                {                    p[k].x=i,p[k].y=j;                    k++;                }            }            scanf("%*c");        }        scanf("%d",&m);        for(int i=0; i<m; i++)            cin>>str[i];        string sss[4];        int temp;        for(int i=0; i<k; i++) //1        {            sss[0]+=ma[p[i].x][p[i].y];            temp=n-1-p[i].x;            p[i].x=p[i].y;            p[i].y=temp;        }        qsort(p,k,sizeof(p[0]),cmp);        for(int i=0; i<k; i++) //2        {            sss[1]+=ma[p[i].x][p[i].y];            temp=n-1-p[i].x;            p[i].x=p[i].y;            p[i].y=temp;        }        qsort(p,k,sizeof(p[0]),cmp);        for(int i=0; i<k; i++) //3        {            sss[2]+=ma[p[i].x][p[i].y];            temp=n-1-p[i].x;            p[i].x=p[i].y;            p[i].y=temp;        }        qsort(p,k,sizeof(p[0]),cmp);        for(int i=0; i<k; i++) //3        {            sss[3]+=ma[p[i].x][p[i].y];        }                                string tans="";        int g=0;        for(int i=0; i<4; i++)        {                        string ans="",ss,s="";            for(int j=0; j<4; j++)                s+=sss[(i+j)%4];            int len=s.size(),ok=1;            int one=0;            for(int i=0; i<len; i++)            {                if((s[i]=='.')&&one)                {                    one=0;                    int flag=1;                                        for(int i=0; i<m; i++)                        if(ss==str[i])                        {                            flag=0;                            ans+=" ";                            ans+=ss;                        }                    if(flag)                    {                        ok=0;                        break;                    }                    ss="";                }                                if(s[i]!='.')                {                    ss+=s[i];                    one=1;                }                            }            if(one&&ok)            {                int flag=1;                for(int i=0; i<m; i++)                    if(ss==str[i])                    {                        flag=0;                        ans+=" ";                        ans+=ss;                    }                if(flag)                {                    ok=0;                }            }//            cout<<"ans="<<ans<<endl;            if(ok)            {                if(!g)                {                    tans=ans;                    g=1;                }                else                {                    if(ans<tans)                        tans=ans;                }            }        }        printf("Case #%d:",++ncase);        if(g)            cout<<tans<<endl;        else            printf(" FAIL TO DECRYPT\n");    }    return 0;} 




求高手!!!

[解决办法]
不行!

热点排行