赞
踩
选择题考得知识点很多,java c++ c linux 高等数学 数据结构 算法等等
2道编程题 第一个写出来了且编译通过100% 第二个67%
- /*
- 第一题:
- 小明射箭,每次射击靶子上有N个气球,每个气球都有分数
- 小明没有射中气球,得分0
- 小明射中一个气球,得分ai
- 小明射中x,y,得分 ai | aj
- 例:
- 输入:
- 3
- 1 2 3
- 输出:
- 15
- 解:
- */
- #include<iostream>
- #include<vector>
- using namespace std;
-
- int main()
- {
- int n = 0;
- vector<int> vi;
- while (n--)
- {
- int a = 0;
- cin >> a;
- vi.push_back(a);
- }
- int res = 0;
- for (int i = 1; i < vi.size(); i++)
- {
- for (int j = 0; j < i; j++)
- {
- res += vi[i] | vi[j];
- }
- }
- for (auto i : vi)
- res += i;
- cout << res << endl;
-
- return 0;
- }
- /*
- 第二题:
- 小明进入某个空间,N*M矩形,每个位置都有一个值非零数或-1,
- 退出空间的方法是找到一个正方形,
- 正方形里的值加起来最大且不能有-1,
- 输入:
- 1
- 4 4
- 3 0 x x
- 0 9 -1 x
- -1 x x x
- x -1 x -1(具体值记不清了)
- 输出:
- 12(3+0+0+9=12)
- */
- #include<iostream>
- #include<vector>
- #include<limits.h>
-
- int main()
- {
- int T = 0;
- cin >> T;
- while (T--)
- {
- int n, m;
- cin >> n >> m;
- vector<vector<int>> vvi(n, vector<int>(m));
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- int a = 0;
- cin >> a;
- vvi[i][j] = a;
- }
- }
- int len = 0;
- int res = 0;
- vector<vector<int>> dp(n, vector<int>(m));
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- if (vvi[i][j] != -1)
- {
- if (i == 0 || j == 0)
- {
- dp[i][j] = 1;
- }
- else
- {
- dp[i][j] = min(min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1;
- }
- len = max(len, dp[i][j]);
- int maxsum = 0;
- if (i - len >= 0 && j - len >= 0)
- {
- for (int k = i - len; k < i; k++)
- {
- for (int z = j - len; z < j; z++)
- {
- if (vvi[k][z] == -1)
- {
- maxsum = INT_MIN;
- break;
- }
- maxsum += vvi[k][z];
- }
- }
- }
- res = max(maxsum, res);
- res = max(vvi[i][j], res);
- }
- }
- }
- cout << res << endl;
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。