楼层分配问题!!!!急急急急!!!!帮忙啊!!!!

来源:百度知道 编辑:UC知道 时间:2024/07/04 09:08:01
一、题目:解决楼层分配问题
2. 基本要求
(1) 要求用C++语言编程,在Visual C++环境下调试完成;
(2) 要求划分功能模块,各个功能分别使用函数来完成;
(3) 源代码程序要求必要的注释。
1. 课题功能描述
设计一个能够解决楼层分配问题的程序,要求实现的功能包括:找所有满足特定条件的楼层分配方案,然后输出
2. 问题详细描述
特定条件:现有五层的公寓分配给A、B、C、D、E五个人住。其中A不住1楼,B不住5楼,C和D住上下楼(可以C比D住的高,也可以D比C住的高),E比C住的高。
要求编写多个函数分别实现上述功能,而后在main函数中进行调用。
3. 问题的解决方案:
根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。
可以利用穷举法,把所有楼层分配的可能都列出来,对每一种楼层分配进行判断,如果满足上述条件则输出。
四、主要技术问题的描述
可以声明一个数组用来代表楼层,例如数组的第一个元素代表1楼,第二个元素代表2楼,依次类推。然后用一个五层的循环来生成所有可能的楼层分配。

#include <iostream>
#include<cmath>
using namespace std;

char str[5]={'A','B','C','D','E'};
int used[5]={0};
char output[5];
int length;

int getsub(char arr[],char s){
for(int i=0;i<5;i++)
if(arr[i]==s) break;
return i;
}

void F(int d)
{
int i;
for(i=0;i<=length;i++)
{
if(!used[i])
{
used[i]=1;
output[d]=str[i];
if(d==length&&output[0]!='A'&&output[4]!='B'&&abs(getsub(output,'C')-getsub(output,'D'))==1&&getsub(output,'E')-getsub(output,'C')>0){
for(d=0;d<=length;d++)
cout<<output[d]<<" ";
cout<<endl;
}
else
F(d+1);
used[i]=0;
}
}

}

void main()
{
str[5]=0;
length=str