记第一次tc

     第一次写tc,不知从何下手,以前学的用c++ 写类,现在忘干净了,string也不知道怎么用,还是网上现看的,平时很少用c++的这些库函数,看来做tc要逼着自己学了,万事开头难,发现写了第一个后,第二个写着就很顺手了,只是第一个费的时间太长

250pt 题目描述:给出一个字符串,如果是回文串输出“PALINDROME”,如果不是,则把字符串里面所有想连续的相同的字符由一个字符来代替,再判断是否为回文,如果是输出"FAUX",如果两种情况都不是则输出:"NOT EVEN FAUX"

View Code
 1 #include <iostream>
 2 #include <string>
 3 #include <string.h>
 4 
 5 using namespace std;
 6 
 7 bool vis[55];
 8 int hash[55],tmp[55];
 9 class FauxPalindromes
10 {
11     public:
12     string classifyIt(string word)
13     {
14         string b;
15         int n = word.size();
16         int i,j;
17         int flag = 0;
18         for(i = 0, j = n - 1; i <= j; i++,j--)
19         {
20             if(word[i] != word[j]) {flag = 1;break;}
21         }
22         if(!flag)
23         {
24             string ans("PALINDROME");
25             return ans;
26         }
27         else
28         {
29             flag = 0;
30             for(i = 1; i < n; i++)
31             {
32                 if(word[i] != word[i - 1])
33                 {
34                     b += word[i - 1];
35                 }
36             }
37             b += word[n - 1];
38             n = b.size();
39             for(j = 0,i = n - 1; j <= i; j++,i--)
40             {
41                 if(b[j] != b[i]) {flag = 1; break;}
42             }
43             if(!flag)
44             {
45                 string ans("FAUX");
46                 return ans;
47             }
48             else
49             {
50                 string ans("NOT EVEN FAUX");
51                 return ans;
52             }
53         }
54     }
55 };

500pt题目描述:给出红绿蓝三种颜色的球每种的个数分别用 r g b 表示,对着三个球顺次进行操作,消灭一个红的,然后消灭一个绿的,然后消灭一个蓝的,然后循环,问第k个消灭的是什么颜色。

View Code
  1 #include <stdio.h>
  2 #include <iostream>
  3 #include <string>
  4 #include <string.h>
  5 #define _clr(a,val) (memset(a,val,sizeof(a)))
  6 #define Max(a,b) (a) > (b) ? (a) : (b)
  7 #define Min(a,b) (a) < (b) ? (a) : (b)
  8 
  9 using namespace std;
 10 
 11 class AlternateColors
 12 {
 13 public :
 14     int a[3];
 15     int mod;
 16     string getColor(long long r, long long g, long long b, long long k)
 17     {
 18         _clr(a,0);
 19         long long minx = Min(r,Min(g,b));
 20         if(r == minx) a[0] = 1;
 21         if(g == minx) a[1] = 1;
 22         if(b == minx) a[2] = 1;
 23         cout<<endl;
 24         if(k <= minx * 3)
 25         {
 26             mod = k % 3;
 27             if(mod == 0)
 28             {
 29                 return "BLUE";
 30             }
 31             else if(mod == 1) return "RED";
 32             else return "GREEN";
 33         }
 34         else
 35         {
 36             k -= (minx * 3);
 37             r -= minx;
 38             g -= minx;
 39             b -= minx;
 40             if(a[0] && a[1]) return "BLUE";
 41             if(a[0] && a[2]) return "GREEN";
 42             if(a[2] && a[1]) return "RED";
 43             if(a[0])
 44             {
 45                 if(g > b)
 46                 {
 47                     if(k <= b * 2)
 48                     {
 49                         mod = k % 2;
 50                         if(mod == 0) return "BLUE";
 51                         else return "GREEN";
 52                     }
 53                     else return "GREEN";
 54                 }
 55                 else
 56                 {
 57                     if(k <= g * 2)
 58                     {
 59                         mod = k % 2;
 60                         if(mod == 0) return "BLUE";
 61                         else return "GREEN";
 62                     }
 63                     else return "BLUE";
 64                 }
 65             }
 66             if(a[1])
 67             {
 68                 if(r > b)
 69                 {
 70                     if(k <= b * 2)
 71                     {
 72                         mod = k % 2;
 73                         if(mod == 0) return "BLUE";
 74                         else return "RED";
 75                     }
 76                     else return "RED";
 77                 }
 78                 else
 79                 {
 80                     if(k <= r * 2)
 81                     {
 82                         mod = k % 2;
 83                         if(mod == 0) return "BLUE";
 84                         else return "RED";
 85                     }
 86                     else return "BLUE";
 87                 }
 88             }
 89             if(a[2])
 90             {
 91                 if(r > g)
 92                 {
 93                     if(k <= 2 * g)
 94                     {
 95                         mod = k % 2;
 96                         if(!mod) return "GREEN";
 97                         else return "RED";
 98                     }
 99                     else return "RED";
100                 }
101                 else
102                 {
103                     if(k <= 2 * r)
104                     {
105                         mod = k % 2;
106                         if(!mod) return "GREEN";
107                         else return "RED";
108                     }
109                     else return "GREEN";
110                 }
111             }
112         }
113     }
114 };

 1050pt题目还没看,写了再贴

posted @ 2012-12-13 11:10  AC_Girl  阅读(201)  评论(0编辑  收藏  举报