1.一些数字可以颠倒过来看,例如 00、11、88 颠倒过来还是本身,66 颠倒过来是 99,99 颠倒过来看还是 66,其他数字颠倒过来都不构成数字。类似的,一些多位数也可以颠倒过来看,比如 106106 颠倒过来是 901901。假设某个城市的车牌只由 55 位数字组成,每一位都可以取 00 到 99。请问这个城市最多有多少个车牌倒过来恰好还是原来的车牌?( ) 2.#include using namespace std; const int maxn = 10000; int n; int a[maxn]; int b[maxn]; int f(int l, int r, int depth) { if (l > r) return 0; int min = maxn, mink; for (int i = l; i <= r; ++i) { if (min > a[i]) { min = a[i]; mink = i; } } int lres = f(l, mink - 1, depth + 1); int rres = f(mink + 1, r, depth + 1); return lres + rres + depth * b[mink]; } int main() { cin >> n; for (int i = 0; i < n; ++i) cin >> a[i]; for (int i = 0; i < n; ++i) cin >> b[i]; cout << f(0, n - 1, 1) << endl; return 0; } 当 n=100n=100 时,若 bb 数组满足,对于任意 0 \le i < n0≤i<n,都有 b[i] = 1b[i]=1,那么输出最小为( ) 【解析】已知b[0] = 1, b[1] = 2, …, b[9] = 10,要输出最大值,即depth * b[mink]的和最大,那么depth的值应该尽可能的大。与上道题类似,数组a[]中元素是有序的,才能保证归深度最大,最大值 = 1 × 1 + 2 × 2 + 3 × 3 + . . . + 10 × 10 = 385 =1 \times\ 1+ 2 \times 2 + 3 \times 3 + … + 10 \times 10=385 =1× 1+2×2+3×3+…+10×10=385。 3.(矩阵变换)有一个奇幻的矩阵,在不停的变幻,其变幻方式为:数字 00 变成矩阵 ,数字 11 变成矩阵 。最初该矩阵只有一个元素 00,变幻 nn 次后,矩阵会变成什么样?
例如,矩阵最初为:[ 0 ][0];矩阵变幻一次后:;矩阵变幻 22 次后:。
输入一行一个不超过 1010 的正整数 nn。输出变幻 nn 次后的矩阵。
试补全程序。
提示:
<< 表示二进制左移运算符,例如 (11)_{2} << 2 = (1100)_2(11) 2 <<2=(1100) 2 。
而 ^ 表示二进制异或运算符,它将两个运算的数中的每个对应的二进制位一一进行比较,若两个二进制位相同,则运算结果的对应二进制位为 00,反之为 11。
1 #include 2 using namespace std; 3 int n; 4 const int max_size = 1 << 10; 5 6 int res[max_size][max_size]; 7 8 void recursive(int x, int y, int n, int t) { 9 if (n == 0) { 10 res[x][y] = ①; 11 return; 12 } 13 int step = 1 << (n - 1); 14 recursive(②, n - 1, t); 15 recursive(x, y + step, n - 1, t); 16 recursive(x + step, y, n - 1, t); 17 recursive(③, n - 1, !t); 18 } 19 20 int main() { 21 scanf("%d", &n); 22 recursive(0, 0, ④); 23 int size = ⑤; 24 for (int i = 0; i < size; i++) { 25 for (int j = 0; j < size; j++) 26 printf("%d", res[i][j]); 27 puts(""); 28 } 29 return 0; 30 }
③ 处应填( ) 空①,递归结束条件,当n == 0时,此时:res[x][y] = t。 空②,递归处理左上角的矩阵,其左上角的坐标就是:x,y 空③,递归处理右下角的矩阵,其左上角的坐标为:x+step,y+step 空④,初始情况:n, 0 空⑤:经过n次变换后,矩阵的大小为 2 n × 2 n 2n\times2n 2 n ×2 n ,size为矩阵的行列个数,所以次空应为1<<n。