zoukankan      html  css  js  c++  java
  • 杭电acm 1015题

    马上要找工作了,锻炼下自己的写程序能力,不多说,上代码

     1 /********************杭电acm 1015 已AC
     2                      在这个程序里,使用穷举法来实现,但是输出顺序需要安装字典的最大
     3                      来输出
     4                      1,在升序排序时,可以直接使用sort这个函数,也可以自己写..
     5                          在自己写的程序里面要注意下标的越界问题
     6       ***********************************/
     7 
     8 #include "iostream"
     9 
    10 
    11 using namespace std;
    12 
    13 #define Max 20
    14 int main(void)
    15 {
    16     int target;
    17     int len;
    18     int temp=0;
    19     int mark=0;
    20     char letters[Max];
    21     int flag[5]={0};
    22     int nu[Max];
    23     cin>>target;
    24     while(target)
    25     {
    26         for(int f=0;f<5;f++)
    27             flag[f]=0;
    28         mark=0;
    29         cin>>letters;
    30         len=strlen(letters);
    31         if((target==0)&&(!strcmp(letters,"END")))
    32             break;
    33         for(int i=0;i<len;i++)
    34             nu[i]=letters[i]-'A'+1;
    35         //将所有的都排好顺序,这样才能保证枚举出来的一组是按字典最大的一组
    36         for(i=0;i<len;i++)
    37         {
    38             for(int t=1;t<len-i;t++)//注意这里排序的时候t=1,不然可能会下标越界
    39              {if(nu[t-1]>nu[t])
    40                 {
    41                     int tt=nu[t];
    42                     nu[t]=nu[t-1];
    43                     nu[t-1]=tt;
    44                     char ss=letters[t];
    45                     letters[t]=letters[t-1];
    46                     letters[t-1]=ss;
    47                 }
    48              }
    49         }
    50         //for(int t=0;t<len;t++)
    51         //    cout<<nu[t]<<" ";
    52         //cout<<endl;
    53 
    54         for(i=0;i<len;i++)
    55         {
    56             for(int j=0;j<len;j++)
    57             {
    58                 for(int m=0;m<len;m++)
    59                 {
    60                     for(int n=0;n<len;n++)
    61                     {
    62                         for(int s=0;s<len;s++)
    63                         {
    64                             if(i!=j&&i!=m&&i!=n&&i!=s&&j!=m&&j!=n&&j!=s&&m!=n&&m!=s&&n!=s)
    65                             {temp=nu[i]-nu[j]*nu[j]+nu[m]*nu[m]*nu[m]-nu[n]*nu[n]*nu[n]*nu[n]+nu[s]*nu[s]*nu[s]*nu[s]*nu[s];
    66                                 if(target==temp)
    67                                 {                            
    68                             
    69                                     
    70                                     flag[0]=i;flag[1]=j;flag[2]=m;flag[3]=n;flag[4]=s;
    71                                     mark=1;
    72                                     
    73                             //    goto Out;
    74                                 }
    75                             }
    76                             
    77                         }
    78                     }
    79                 }
    80             }
    81         }
    82             //Out:
    83             if(mark==0)
    84                 cout<<"no solution"<<endl;
    85             else
    86                 cout<<letters[flag[0]]<<letters[flag[1]]<<letters[flag[2]]<<letters[flag[3]]<<letters[flag[4]]<<endl;
    87                 cin>>target;
    88             
    89     }
    90     
    91     return 0;
    92 
    93 }

    这个题目直接使用暴力穷举法可以解决,估计是系统的数据弱了.....

  • 相关阅读:
    完善例题3.2的日期类mydate
    杨辉三角形
    求100以内的素数
    九九乘法表
    实现计算机界面
    完善3.2例题
    杨辉三角法
    素数程序
    九九乘法表
    杨辉三角
  • 原文地址:https://www.cnblogs.com/kb342/p/3658515.html
Copyright © 2011-2022 走看看