0
题目中文
1
简单的模拟,用了队列。注意,front()是头,back()是尾,先进的在front,后进的从back进
2
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <queue>
#include <string>
using namespace std;
int mat[1010][1010];
int main()
{
int n;
queue<int> qq;
while (cin >> n&&n){
while (!qq.empty()){
qq.pop();
}
int number = 0;
int sum = 0;
int cur = 0;
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
cin>>mat[i][j];
}
}
int m;
cin >> m;
string com;
int mudi;
for (int i = 1; i <= m; i++){
cin >> com;
if (com == "UP"){
cin >> mudi;
//cout << "a" << endl;
if (number == 7){
continue;
}
if (cur == mudi){
continue;
}
qq.push(mudi);
//cout << qq.back() << endl;
number++;
//cout << "i:" << i << endl;
}
else{
//cout << "b" << endl;
if (qq.empty()){
//cout << "aaa" << endl;
continue;
}
//cout << "c" << endl;
int next = qq.front();
sum += mat[cur][next];
//cout << "sum: "<<sum << endl;
qq.pop();
cur = next;
number--;
if (qq.empty()){
//cout << "bbb" << endl;
continue;
}
//cout << "i:"<<i<<endl;
while (!qq.empty()&&qq.front() == next){
qq.pop();
number--;
}
}
}
cout << sum << endl;
}
}