Q:最大子矩阵(刚开始不会)
int main() {
int n, m, ans;
ans = -1005; //让ans非常小,以便更新
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> A[i][j];
}
}
//暴力搜索
for (int i1 = 0; i1 < n; i1++) { //限制两行之间
for (int i2 = i1; i2 < n; i2++) {
for (int j1 = 0; j1 < m; j1++) { //限制两列之间
for (int j2 = 0; j2 < m; j2++) {
int temp_ans = 0;
for (int i = i1; i <= i2; i++) { //计算结果
for (int j = j1; j <= j2; j++) {
temp_ans += A[i][j];
}
}
ans = temp_ans > ans ? temp_ans : ans; //结果变大就更新
}
}
}
}
cout << ans << endl;
return 0;
}
Q:蒜头君的随机数
int main() {
int n;
cin >> n;
int arr[105];
int c[105] = { 0 };
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int num = 1;
sort(arr, arr + n);
for (int i = 1; i < n; i++) {
if (arr[i] == arr[i - 1])
c[i] = 1; //重复的标记成1
else
num++;
}
cout << num << '\n';
for (int i = 0; i < n; i++) {
if (!c[i])
if (i != n - 1)
cout << arr[i] << " ";
else
cout << arr[i];
}
return 0;
}
Q:进制转换(刚开始不会)
int main() {
int n, r;
cin >> n >> r;
if (n < 0) {
cout << "-";
n = -n;
}
//换进制其实就是将n不断地%r 取余,结果存到数组里面,n记得每一次要 /r
int m = 0; //!!非常妙
int now;
if (n == 0)
cout << 0 << endl;
else {
while (n) { //n变成0为止
now = n % r;
if (now >= 10)
ans[m++] = now + 'A' - 10; //!!!记得减去10!
else
ans[m++] = now + '0';
n /= r;
}
for (int i = m - 1; i >= 0; i--) {
cout << ans[i];
}
cout << endl;
}
return 0;
}
——————————————
今天事儿多,我先睡了!