不要二
解题思路:
本质是在二维数组中每个坐标去放蛋糕,一个坐标位置放了蛋糕,跟他欧几里得距离为2的位置不能放蛋糕,如果(x1,y1)放了蛋糕,则满足((x1-x2)(x1-x2)+(y1-y2)(y1-y2))==4的(x2,y2)不能放蛋糕。可以用加法表达式分解最后得知两个表达式一个等于0,一个等于4时表达式成立。
int main()
{
int w, h, count = 0;
cin >> w >> h;
vector<vector<int>> a;
a.resize(w);
for (auto e : a)
{
e.resize(h, 1);
}
for (int i = 0; i < w; i++)
{
for (int j = 0; i < h; j++)
{
if (a[i][j] = 1)
{
count++;
if (i + 2 < w)
{
a[i + 2][j] = 0;
}
if (j + 2 < h)
{
a[i][j + 2] = 0;
}
}
}
}
cout << count << endl;
return 0;
}
把字符串转换成整数
解题思路:
上次计算的结果*10,相当于10进制进位,然后加当前位的值。
class Solution
{
public:
int StrToInt(string str)
{
if (str.empty())
{
return 0;
}
int flag = 1;
bool b = true;
if (str[0] == '-')
{
flag = -1;
b = true;
}
else if (str[0]=='+')
{
flag = 1;
b = false;
}
int sum = 0;
for (int i = 0; i < str.size(); ++i)
{
if (str[i] < '0' || str[i]>'9')
{
sum = 0;
break;
}
sum = sum * 10 + str[i] - '0';
}
return flag * sum;
}
};