当前位置: 首页 > news >正文

河工oj第七周补题题解2024

A.GO LecturesⅠ—— Victory

GO LecturesⅠ—— Victory - 问题 - 软件学院OJ

 代码

统计

#include<bits/stdc++.h>
using namespace std;double b, w;int main() {for(int i = 1; i <= 19; i ++) {for(int j = 1; j <= 19; j ++) {char ch; cin >> ch;if(ch == 'B') b ++;else w ++;}}if(b-7.5>w) puts("Black");else puts("White");return 0;
}

B.GO LecturesⅡ—— Liberty

GO LecturesⅡ—— Liberty - 问题 - 软件学院OJ

 

代码 

在所给的位置上就地搜索。dfs搜索四个方向。

#include<bits/stdc++.h>
using namespace std;const int N = 50;
char g[N][N];
int vis[N][N];
int n;
int ans;
int dx[4] = {0,-1,0,1},dy[4] = {-1,0,1,0};void dfs(int x, int y) {vis[x][y] = 1;for(int i = 0; i < 4; i ++) {int a = x+dx[i], b = y+dy[i];if(a<0||b<0||b>=n||a>=n) continue;if(!vis[a][b] && g[a][b]=='*') {ans ++, vis[a][b] = 1;}else if(!vis[a][b] && g[a][b] == g[x][y]) {dfs(a,b);}}
}int main() {cin >> n;for(int i = 0; i < n; i ++) {for(int j = 0; j < n; j ++) {cin >> g[i][j];}}int x, y;cin >> x >> y;//下标从1开始的,偏移一下,我这从0开始输入 dfs(x-1,y-1);cout << ans << endl;return 0;
}

C.GO Lectures Ⅲ—— Gambling

 

代码 

第二个代码有解释。先处理!last再处理last,因为 last落子要除掉!last。

#include<bits/stdc++.h>
using namespace std;const int N = 50;
char g[N][N];
int vis[N][N], num[N][N]; // 标记以及气数 
int cnt;int dx[4] = {-1,0,1,0},dy[4] = {0,-1,0,1};// 找某位置连通块气数
void dfs(int x,int y) {vis[x][y] = 1;for(int i = 0; i < 4; i ++) {int a = x+dx[i], b = y+dy[i];if(a<1||b<1||a>9||b>9) continue;if(!vis[a][b] && g[a][b]=='*') {cnt ++, vis[a][b] = 1;}else if(!vis[a][b] && g[a][b] == g[x][y]) dfs(a,b);}
} int main() {char last; cin >> last;for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {cin >> g[i][j];}}// 找非last 气数以及替换for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {if(g[i][j] != last && g[i][j]!='*') {memset(vis,0,sizeof vis); cnt = 0;dfs(i,j); num[i][j] = cnt;}}} for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {if(g[i][j]!=last && !num[i][j]) {g[i][j] = '*';}}}//last 气数以及替换for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {if(g[i][j]==last && g[i][j]!='*') {memset(vis,0,sizeof vis); cnt = 0;dfs(i,j); num[i][j] = cnt;}}} for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {if(g[i][j]==last && !num[i][j]) {g[i][j] = '*';}}}// 输出for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {cout << g[i][j];}puts("");} return 0;
}

加函数封装简短一点

#include<bits/stdc++.h>
using namespace std;const int N = 50;
char g[N][N];
int vis[N][N], num[N][N];
int cnt;int dx[4] = {-1,0,1,0}, dy[4] = {0,1,0,-1};
//找气数 
void dfs(int x, int y) {vis[x][y] = 1;for(int i = 0; i < 4; i ++) {int a = x+dx[i], b = y+dy[i];if(a<1||b<1||a>9||b>9) continue;if(!vis[a][b] && g[a][b]=='*') {cnt ++, vis[a][b] = 1;}else if(!vis[a][b] && g[a][b]==g[x][y]) {dfs(a,b);}}
}
// 找ch气数
void find(char ch) {for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {if(g[i][j]==ch) { //三种元素多加一个!='*' 判断。//用函数封装了不加也可以,传newlast memset(vis,0,sizeof vis); cnt = 0;dfs(i,j); num[i][j] = cnt;}}}
} 
//替换 ch
void solve(char ch) {for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {if(g[i][j]==ch && !num[i][j]) g[i][j]= '*';}}
} int main() {char last; cin >> last;//要先处理非最后一个落子的,因为last 要除去 newlast for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {cin >> g[i][j];}}char newlast;if(last == 'B') newlast = 'W';else newlast = 'B';find(newlast); solve(newlast);find(last); solve(last);// 处理完输出for(int i = 1; i <= 9; i ++) {for(int j = 1; j <= 9; j ++) {cout << g[i][j];}puts("");} return 0;
}

D.1726: Advanced InferenceⅠ

Advanced InferenceⅠ - 问题 - 软件学院OJ

代码

对1取模都是0,满1为0。

#include<bits/stdc++.h>
using namespace std;using ll = long long;int main() {ll n, k;cin >> n >> k;cout << 0 << endl;return 0;
}

E.Advanced Inference Ⅱ

Advanced Inference Ⅱ - 问题 - 软件学院OJ

代码

常数的导数 是0

#include<bits/stdc++.h>
using namespace std;using ll = long long;int main() {ll n, k;cin >> n >> k;cout << 0 << endl;return 0;
}

F. Advanced Inference Ⅲ

Advanced Inference Ⅲ - 问题 - 软件学院OJ

代码 

n阶求导是 k*n! 

如果n < 10   k*n!

如果n>=10 k*n! 对n-2 取模是0,因为其中有(n-2) 因子

#include<bits/stdc++.h>
using namespace std;using ll = long long;
ll n, k;
ll ans;int main() {cin >> k >> n;if(n>=10) cout << 0 << endl;else {ans = k;for(int i = 1; i <= n; i ++) {ans *= i;}cout << ans << endl;}return 0;
}

G.Intemperance Ⅰ

Intemperance Ⅰ - 问题 - 软件学院OJ

代码 

#include<bits/stdc++.h>
using namespace std;using ll = long long;
ll n, m;
const int N = 1e6+10;
ll a[N];int main() {cin >> n >> m;ll w = 0, ans = 1;for(int i = 1; i <= n; i ++) cin >> a[i];for(int i = 1; i <= n; i ++) { if(w+a[i]<=m) {w += a[i];}else { // 当前满了 ans ++; w = a[i];//更新重装本轮 }}cout << ans << endl;return 0;
}

H.Intemperance Ⅱ

Intemperance Ⅱ - 问题 - 软件学院OJ

代码 

#include<bits/stdc++.h>
using namespace std;int n;
int sum = 0, length;
int main() {cin >> n;int t = n;for(int i = 1; sum <= n; i += 2,sum+=i) {length ++;}cout << length << endl;return 0;
}

http://www.lryc.cn/news/502187.html

相关文章:

  • 卷积的数学原理与作用
  • 路由介绍.
  • CTFshow-命令执行(Web29-40)
  • MySQL锁的类型有哪些
  • 基于 JNI + Rust 实现一种高性能 Excel 导出方案(下篇)
  • 关于Python程序消费Kafka消息不稳定问题的处理方法
  • 【OpenCV】Canny边缘检测
  • 算法-二进制和位运算
  • OpenAI Chatgpt 大语言模型
  • SpringBoot【九】mybatis-plus之自定义sql零基础教学!
  • C#,人工智能,深度学习,目标检测,OpenCV级联分类器数据集的制作与《层级分类器一键生成器》源代码
  • 调度系统:Luigi 的主要特性和功能
  • C# 探险之旅:第二节 - 定义变量与变量赋值
  • AUTOSAR:SOME/IP 概念
  • 循序渐进kubenetes Service(Cluster ip、Nodeport、Loadbalancer)
  • 深入理解 Apache Shiro:安全框架全解析
  • mac 安装CosyVoice (cpu版本)
  • 币安移除铭文市场的深度解读:背后原因及其对区块链行业的影响
  • 深度学习实战野生动物识别
  • windows安装使用conda
  • 手机租赁系统开发全流程解析与实用指南
  • SpringBoot 开发—— YAML文件深度分析
  • 复合机器人整体解决方案
  • 【Oracle11g SQL详解】日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等
  • VSCode设置字体
  • shell编程入门之提取字符并设置rtc时间
  • react 不可变数据更新(Immutable Update)合并对象 类似与Java 的BeanUtils.copyProperties‌
  • Linux GCC基础用法⑦
  • PyTorch 切片运算 (Slice Operator)
  • SpringSecurity Oauth2 -账号密码实现多因子身份认证