第一题
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fe69acc3603644a6beccaa66a2c05ace.png)
#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
int romanToInteger(const string& s);
int main() {
int numCases;
cin >> numCases;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
vector<string> romanNumerals;
for (int i = 0; i < numCases; ++i) {
string romanNumeral;
getline(cin, romanNumeral);
romanNumerals.push_back(romanNumeral);
}
for (const string& romanNumeral : romanNumerals) {
int arabicNumeral = romanToInteger(romanNumeral);
cout << arabicNumeral << endl;
}
return 0;
}
int romanToInteger(const string& s) {
map<char, int> romanToArabic = {
{'I', 1},
{'V', 5},
{'X', 10},
{'L', 50},
{'C', 100},
{'D', 500},
{'M', 1000}
};
int result = 0;
for (int i = 0; i < s.length(); ++i) {
if (i < s.length() - 1 && romanToArabic[s[i]] < romanToArabic[s[i + 1]]) {
result -= romanToArabic[s[i]];
}
else {
result += romanToArabic[s[i]];
}
}
return result;
}
第二题
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b4a4deba487942bbb30fd00093005db5.png)
#include <stdio.h>
#include <limits.h>
int calculateMinCost(int N, int matrix[][100]);
int main() {
int numCases;
scanf("%d", &numCases);
for (int caseNum = 0; caseNum < numCases; ++caseNum) {
int N;
scanf("%d", &N);
int matrix[100][100];
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
scanf("%d", &matrix[i][j]);
}
}
int minCost = calculateMinCost(N, matrix);
printf("%d\n", minCost);
}
return 0;
}
int calculateMinCost(int N, int matrix[][100]) {
int minCost = INT_MAX;
for (int startCol = 0; startCol < N; ++startCol) {
int currentCost = 0;
for (int row = 0; row < N; ++row) {
int minPrice = INT_MAX;
for (int col = 0; col < N; ++col) {
int price = matrix[row][col];
if (price < minPrice) {
minPrice = price;
}
}
currentCost += minPrice;
}
if (currentCost < minCost) {
minCost = currentCost;
}
}
return minCost;
}