题目
某寺庙里7个和尚:轮流挑水,为了和其他任务不能冲突,各人将有空天数列出如下表:
和尚1: 星期二,四;
和尚2: 星期一,六;
和尚3: 星期三,日;
和尚4: 星期五;
和尚5: 星期一,四,六;
和尚6: 星期二,五;
和尚7: 星期三,六,日;
请将所有合理的挑水时间安排表
思路 回朔法求解
回朔法即每进行一步,都试图在当前部分解的基础上扩大该部分解。扩大时,首先检查扩大后是否违反了约束条件,若不违反,则扩大之,然后继续在此基础上按照类似的方法进行,直至成为完整解;若违反,则放弃该步以及它所能生成的部分解,然后按照类似的方法尝试其他可能的扩大方式,直到尝试了所有的扩大方式。
请输入和尚1的空闲时间:0 1 0 1 0 0 0
请输入和尚2的空闲时间:1 0 0 0 0 1 0
请输入和尚3的空闲时间:0 0 1 0 0 0 1
请输入和尚4的空闲时间:0 0 0 0 1 0 0
请输入和尚5的空闲时间:1 0 0 1 0 1 0
请输入和尚6的空闲时间:0 1 0 0 1 0 0
请输入和尚7的空闲时间:0 0 1 0 0 1 1
代码
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
void DrawingWater(vector<vector<int> > &spare,int index,int &count,vector<int> &week,vector<bool> &visited){
int i;
if(index == 7){
++count;
cout<<"方案"<<count<<endl;
for(i = 0; i < 7;++i){
cout<<"星期"<<i+1<<" 和尚"<<week[i]+1<<" 挑水"<<endl;
}
cout<<endl;
return;
}
for(i = 0;i < 7;++i){
week[index] = i;
if(!visited[i] && spare[i][index] == 1){
visited[i] = true;
DrawingWater(spare,index+1,count,week,visited);
visited[i] = false;
}
}
}
int main(){
vector<vector<int> > spare(7,vector<int>(7,0));
for(int i = 0;i < 7;++i){
for(int j = 0;j < 7;++j){
cin>>spare[i][j];
}
}
int count = 0;
vector<int> week(7,0);
vector<bool> visited(7,false);
DrawingWater(spare,0,count,week,visited);
cout<<"总共"<<count<<"种方案"<<endl;
return 0;
}
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
华为机试一霸教你过华为机试演讲稿..pdf
华为机试真题(非牛客网试练题)OD考试真题,不定期更新,文档含代码解答
收集整理华为机试108题,目录清晰,内涵C、C++答案 适合初中级练手学习,短时突击
华为OD机试(..75.rar
华为机试一霸教你过华为机试。大菊厂招聘有三关,心理测试,机试,面试。
华为机试一霸教你过华为机试.doc
华为OD机试真题整理合集
(43条消息) 华为OD机试真题2023(JAVA&JS)_华为机试真题_若博豆的博客-CSDN博客.mhtml
华为 OD 机试真题 机试题专栏 题目来自牛客平台机考同学的机试分享,题目描述信息可能记录不完整,题解无法保证通过率,只提供结题思路,注意!注意!!不要直接使用博主代码进行机考! 欢迎加微信: Ayemmar 本文...
华为OD系列--华为OD机试
华为机试一霸教你过华为机试e-18页.pdf
华为机试(Python)真题Od.docx
华为OD机试真题是华为公司用于筛选人才的一种方式,通过这种方式,华为公司可以更好地了解应聘者的技能和能力,从而更好地选择合适的人才。在华为OD机试真题中,应聘者需要解决一系列的问题,包括算法、数据结构、...
华为机试算法题总结 经验分享
本人在准备2014年华为机试的时候,进行整理的,代码全部运行成功。如有错误,请大家见谅。
自己编写的加别人编写的程序。辛苦了好久!
里面有几十道华为历届考过的机试题,可供大家研究和参考,主要是里面的思想,只要理解透了里面的思想,非常有助于机试。
华为机试成功归来,与小伙伴们分享下经验
大师兄教你如何过华为机试
【华为OD机试真题2023JAVA】寻找符合要求的最长子串.html