BASIC 3 字母图形
这一题可以简化思路,规律从两个循环中获得(i - j)
BASIC 10 十进制转16进制
十进制转x进制的题目惯用模板,注意如果要转的进制超过10,要考虑字母的情况。
if (a == 0)
{
cout << "0";
}
else
{
while (a != 0)
{
if (a % x >= 10)
b[i++] = a % 16 + 'A' -10;
else
b[i++] = a % 16 + '0';
a = a / 16;
}
}
BASIC 15 字符串对比
大小写转换
tolower() toupper()
BASIC 18 矩形面积交
判断两个举行是否重合,假设x1,y1是矩形1的左下角,x2,y2是矩形1的右上角。x3,y3是矩形2的左下角,x4,y4是矩形2的右上角。
if((x2 < x3 && x1 < x3) || (y2 < y3 && y1 < y3) || (x4 < x1 && x3 > x1) || (y4 < y1 && y3 < y1))
如果这个要是满足了,那么说明就不重合。
算重合面积,只要把两个x轴上的中间值,y轴上的中间值相减、相乘即可。
BASIC 22 FJ的字符串
掌握递推,要先写出公式。
f(n) = A; n = 1;
f(n) = f(n - 1) + (char)(n + 'A' - 1) + f(n - 1); n > 1
string dfs(int n)
{
if(n == 1) {
return "A";
} else {
return dfs(n - 1) + (char)(n + 'A' - 1) + dfs(n - 1);
}
}
BASIC 25 回形取数
把访问过的点标记成-1,这样遇到-1就转弯
BASIC 27 2n皇后问题
先把算出n皇后的可能,每次条件已成立,把这n个皇后算成障碍物,再给来一遍bfs。
BASIC 29 高精度加法
加法:先把两个数都倒过来一下,这样方便计算。
引申乘法:
https://blog.csdn.net/FGY_u/article/details/83999413
ALGO 4 节点选择
用树形二叉树进行解题,树形二叉树更详细的解释见
https://blog.csdn.net/txl199106/article/details/45373507
ALGO 5 最短路径 ??
无负边,可以用迪杰斯特拉算法。
存在负边的话,用Floyd或者SPFA。
ALGO 9 操作格子
线性树
ALGO 11 瓷砖铺放
用递归的时候记得要解除前一状态。
这题用动态规划的方法也可以,关键是要弄清楚其中的动态方程。
v[i] = v[i-1] + v[i-2];
后一个等于前一个(v[i - 1] + v[i - 2] )是因为当前等于前一个长度加1,前前个长度加2.
复习了迪杰斯特拉算法
PAT_A Public Bike Management