【POJ-1008】Maya Calendar
题目:http://poj.org/problem?id=1008
注意0的情况
#include<iostream>
#include<string>
using namespace std;
int main() {
string maya[19] = { "pop","no","zip" ,"zotz" ,"tzec" ,"xul" ,"yoxkin" ,"mol" ,"chen" ,"yax" ,"zac" ,"ceh" ,"mac" ,"kankin" ,"muan" ,"pax" ,"koyab" ,"cumhu","uayet" };
string haab[20] = { "imix","ik","akbal" ,"kan" ,"chicchan" ,"cimi" ,"manik" ,"lamat" ,"muluk" ,"ok" ,"chuen" ,"eb" ,"ben","ix","mem","cib","caban","eznab","canac","ahau" };
int n, day, year;
string month;
char doc;
cin >> n;
cout << n << endl;
while (n--&&(cin >> day >> doc >> month >> year)) {
int days = 0;
days += (day + 1);
for (int i = 0; i < 19; i++) {
if (maya[i] != month) {
days+= 20;
}else {
break;
}
}
days+= 365*year;
int new_y;;
if (days % 260 == 0)
new_y = days / 260 - 1;
else
new_y = days / 260;
int new_d = days % 13;
if (new_d == 0) {
new_d = 13;
}
int new_m = days % 20;
if (new_m == 0) {
new_m = 20;
}
cout << new_d << " " << haab[new_m-1] << " " << new_y << endl;
}
return 0;
}
【POJ-1068】Parencodings
题目:http://poj.org/problem?id=1068
解题:首先根据p序列生成总的序列,之后根据总的序列对每一个右括号进行左括号的匹配寻找。我用的是设置两个int当作指针,如果左右相等了那就说明匹配完成,否则就继续。(开始的时候怕超时,但是竟然可以。感觉有动态规划的方法,但是我没想)
#include<iostream>
#include<vector>
using namespace std;
int main() {
int N;
cin >> N;
while (N--) {
vector<int> seq;
int n;
cin >> n;
int j = 0;
for (int i = 0; i < n; i++) {
int p;
cin >> p;
for (j; j < p; j++) {
seq.push_back(0);
}
j = p;
seq.push_back(1);
}
int r = 0, l = 0, in = 0;
for (int i = 0; i < seq.size(); i++) {
if (seq[i] == 1) {
for (int j = i; j >= 0; j--) {
if (seq[j] == 1)
r++;
else
l++;
if (l == r) {
cout << r ;
in++;
if (in != n) {
cout << " " ;
}
else {
cout << endl;
}
r = l = 0;
break;
}
}
}
}
}
}