记第一次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题目还没看,写了再贴