CodeForces 400A(Inna and Choose Options)

来源:互联网 发布:知乎广告在哪里看 编辑:程序博客网 时间:2024/04/29 20:05

点击打开链接

这个题考什么呢,事实上啥也没考,只要会C语言就能做,数据量极小,典型的瞎搞搞题目。

之前觉得写if语句,可能导致程序太臃肿,所以后面搞了几个for循环,然后在用一个flag标志量,再break几下,结果呢。把程序搞的很复杂。事实上用if语句还是很不错的。一共要写6组。每一组的长度都差不多。

不多说了,代码:

#include <iostream>#include <string.h>using namespace std;char a[15];int num[15];//如果值为1表明存在这种情况int main(){    int t,ans,flag;//flag作为标志量    cin>>t;    while(t--)    {     cin>>a;     memset(num,0,sizeof(num));//每输一次都要初始化一次,被坑了     ans=0;     for(int i=0;i<=11;i++)//至少有一个的情况,这是1x12     {       if(a[i]=='X')       {        ans++;//总数加1        num[1]=1;        break;       }    }    //这是2x6的情况    if((a[0]==a[6]&&a[0]=='X')||(a[1]==a[7]&&a[1]=='X')||(a[2]==a[8]&&a[2]=='X')||(a[3]==a[9]&&a[3]=='X')||(a[4]==a[10]&&a[4]=='X')||(a[5]==a[11]&&a[5]=='X'))    {       ans++;       num[2]=1;    }     flag=0;     //这是3x4    for(int i=0;i<=3;i++)    {       if(a[i]=='X')       {      for(int j=1;j<=2;j++)      {          if(a[i]==a[i+4*j])            flag=1;           else           {            flag=0;            break;           }      }       }      if(flag==1)         break;    }      if(flag==1)      {       ans++;       num[3]=1;      }      //这是4x3      flag=0;     for(int i=0;i<=2;i++)    {      if(a[i]=='X')      {      for(int j=1;j<=3;j++)      {          if(a[i]==a[i+3*j])            flag=1;           else           {            flag=0;            break;           }      }      }      if(flag==1)         break;    }    if(flag==1)    {       ans++;     num[4]=1;    }    //这是6x2      flag=0;     for(int i=0;i<=1;i++)    {       if(a[i]=='X')       {      for(int j=1;j<=5;j++)      {          if(a[i]==a[i+2*j])            flag=1;           else           {            flag=0;            break;           }      }       }      if(flag==1)         break;    }    if(flag==1)    {       ans++;     num[6]=1;    }      flag=0;    //这是12x1    if(a[0]=='X')    {     for(int i=0;i<=10;i++)     {      if(a[0]==a[i+1])        flag=1;      else      {       flag=0;       break;      }     }    }    if(flag==1)    {       ans++;       num[12]=1;    }    //最后的结果    cout <<ans<<" ";    for(int i=0;i<=12;i++)      if(num[i]!=0)      cout<<i<<'x'<<12/i<<" ";    cout<<endl;    }    return 0;}


 

1 0
原创粉丝点击