力扣299:
第一题:
https://leetcode.cn/problems/check-if-matrix-is-x-matrix/
找规律,然后直接遍历
class Solution {
public:
bool checkXMatrix(vector<vector<int>>& grid) {
int n = grid.size();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j || i + j == n - 1) { /* 对角线非0 */
if (grid[i][j] == 0) {
return false;
}
} else if (grid[i][j] != 0) { /* 其他元素都为0 */
return false;
}
}
}
return true;
}
};
第二题:
https://leetcode.cn/problems/count-number-of-ways-to-place-houses/
题目是求两侧,先求一侧的方案数;
dp[i][0], 第i位置不放房间的方案数;
dp[i][1], 第i位置放置房间的方案数;
转移方程, dp[i][0] = dp[i-1][0] + dp[i-1][1];
dp[i][1] = dp[i-1][0];
最终dp[i] = dp[i][0] + dp[i][1];
class Solution {
public:
const int MOD = 1e9+7;
int countHousePlacements(int n) {
long dp[n][2];
dp[0][0] = 1;
dp[0][1] = 1;
for (int i = 1; i < n; i++)
dp[i][0] = (dp[i-1][0] + dp[i-1][1]) % MOD;
dp[i][1] = dp[i-1][0] % MOD;
}
long ans = dp[n - 1][0] + dp[n - 1][1];
return ans * ans % MOD;
}
};
acwing57:
第一题:
https://www.acwing.com/problem/content/4488/
边输入边计算
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int x,a1=0,b1=0;
for(int i=0;i<n;i++)
{
cin>>x;
a1=a1+x;
}
for(int i=0;i<n;i++)
{
cin>>x;
b1=b1+x;
}
if(a1>=b1)cout<<"Yes";
else cout<<"No";
}