首页 > 其他分享 >XMU校外实训(一)

XMU校外实训(一)

时间:2023-07-03 20:35:12浏览次数:37  
标签:temp int res 校外 init 实训 按钮 XMU 密码锁

二进制密码锁

 

描述:

 

在海拉鲁大陆有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。

然而让人头疼的是,当按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。

当前密码锁状态已知,需要解决的问题是,林克至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。

输入

两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸。

输出

至少需要进行的按按钮操作次数,如果无法实现转变,则输出impossible。

 

输入样例 1 

011
000

输出样例 1

1


题解:

  当某一个按钮状态确定后,它的下一个按钮按与不按取决于这一个与目标状态是否一致,所以后续所有按钮其实都只取决于第一个按钮。

  枚举共两种情况:第一个按钮按(用1标记),第一个按钮不按(用0标记)

  最多次数为30次,故最终结果res初始化为31,用于判断impossible的情况

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     string init, result; // 要操作的,预期的
 7     string temp;         // 记录当前状态
 8     cin >> init >> result;
 9     int n = init.length(), res = 31; // 最多加30次
10     for (int i = 0; i < 2; ++i)
11     {
12         // 当前状态
13         temp = init;
14 
15         int next = i, times = 0;
16 
17         for (int j = 0; j < n; ++j)
18         {
19             if (next == 1)
20             {
21                 ///////////////////
22                 if (j > 0)
23                     temp[j - 1] ^= 1; //^1即实现取反的效果
24                 temp[j] ^= 1;
25                 if (j < n - 1)
26                     temp[j + 1] ^= 1;
27                 ///////////////////
28                 // 以上实现相邻3位取反(边缘为2位)
29 
30                 times++; // 操作次数加1
31             }
32             if (temp[j] == result[j]) // 若两位相同,则不用按下一位
33                 next = 0;
34             else // 若不同,则要按下一位
35                 next = 1;
36             if (temp == result) // 如果能达到预期结果
37             {
38                 res = min(res, times); // 记录最小操作数
39                 break;
40             }
41         }
42     }
43     if (res != 31)
44         cout << res;
45     else // 无法达到预期
46         cout << "impossible";
47 
48     return 0;
49 }

 

标签:temp,int,res,校外,init,实训,按钮,XMU,密码锁
From: https://www.cnblogs.com/nijigasaki14/p/17523942.html

相关文章

  • web开发实训-学习笔记
    微信小程序属于前端前端开发工程师必须要实现相似竞品(快应用华为)具体开发能实现的功能首页的轮播图搜索界面能搜索的几首歌曲点击可播放,封面可以转动能自主的切换上下歌曲WXMLview=div打上{}的数据都是从外部1调取的数据'app.js'最主要的开发界面"color":"#ff......
  • 0627实训
    获取cms后台管理员账号密码方法arp中间人攻击弱口令SQL注入xss数据库攻击数据库攻击敏感数据放在数据库中。远程不允许登录可以通过phpmyadmin进行登录默认账号密码rootroot进入cms_user得到账号密码md5加密e10adc3949ba59abbe56e057f20f883e解......
  • 实训day1
    今日学习学习感受:今日学习了前端的相关知识,非常的简单。因为笔者有开发前端和后端的经验,所以觉得非常的简单。很多知识我都会。所以这里我只记录我忘记的或者我觉得重要的知识点。学习困惑:无学习收获课上所学响应状态码Status200成功403拒绝如果你的访问请求被WAF拦截......
  • 小鹿线前端就业实训室行不行?
    现在web前端开发开发技术在不断地迭代更新,有很多从事前端开发的程序员在技术上会遇到瓶颈,这个时候小伙伴就应该通过不断的学习开发技术知识,来提升自身的开发技术水平,那小伙伴应该怎么来学习呢?1.梳理清楚知识体系框架学习前端开发技术,不管是入门还是进阶,一定都要有知识体系建设......
  • Linux操作系统实训操作(一)
    Linux操作系统实训操作(一)原创 宇翔2020 网路小栈 2023-03-1519:00 发表于山东收录于合集#linux操作系统12个1、查看内核版本的命令(截图)     2、查看发行版本的命令(截图)3、在root用户和sdws用户之间进行切换,并分别查看他们的家目录。(截图)4、查看历史命令(截图......
  • Linux操作系统实训操作五(实验效果)
    Linux操作系统实训操作五(实验效果)原创 宇翔2020 网路小栈 2023-04-1007:00 发表于山东收录于合集#Linux操作系统2个#CentOS4个 1、新建用户jyzy(计应专业)、dmzy(动漫专业)、shzy(书画专业)、hkzy(航空专业),用tail命令查看/etc/passwd文件的后四行内容。(截图)。 ......
  • 小鹿线前端就业实训室靠谱嘛?
    现在web前端开发开发技术在不断地迭代更新,有很多从事前端开发的程序员在技术上会遇到瓶颈,这个时候小伙伴就应该通过不断的学习开发技术知识,来提升自身的开发技术水平,那小伙伴应该怎么来学习呢?1.梳理清楚知识体系框架学习前端开发技术,不管是入门还是进阶,一定都要有知识体系建设......
  • 小鹿线前端就业实训室好不好?
    现在web前端开发开发技术在不断地迭代更新,有很多从事前端开发的程序员在技术上会遇到瓶颈,这个时候小伙伴就应该通过不断的学习开发技术知识,来提升自身的开发技术水平,那小伙伴应该怎么来学习呢?1.梳理清楚知识体系框架学习前端开发技术,不管是入门还是进阶,一定都要有知识体系建设......
  • 九大亮点+六大好处,瑞云科技虚拟仿真实训平台引领教育信息化新潮流
    随着新技术的快速发展和数字化转型的加速推进,高等教育面临着培养创新型、复合型、适应型人才的新要求。虚拟仿真实训教学作为一种新型的教学模式,能够有效解决实训教学中的高投入、高损耗、高风险及难实施、难观摩、难再现的“三高三难”问题,提升学生的动手能力、创新能力和综合......
  • 新星计划|项目实训|SSM旅游网项目实战笔记一
    应邀请,特委派公司开发负责人张老师带队新星计划:SSM旅游网项目实训。现将实训的相关笔记分期发放,以供参考。如需要相关资料,可以博客尾部添加微信获取。一、实训介绍实训目的:其实通过实际的项目来检验大家的理论水平和实操水平,并同时通过实际的项目来积相应的项目经验。IT行业:主要特......