| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1017 人关注过本帖
标题:求助!!关于穷举
只看楼主 加入收藏
ashencs
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-26
收藏
 问题点数:0 回复次数:10 
求助!!关于穷举
关于解决楼层分配问题
现有五层的公寓分配给A、B、C、D、E五个人住。其中A不住1楼,B不住5楼,C和D住上下楼(可以C比D住的高,也可以D比C住的高),E比C住的高。
char name[]={'A','B','C','D','E'};
int i,value[5];
for(value[0]=1;value[0]<6;value[0]++)
for(value[1]=1;value[1]<6;value[1]++)
for(value[2]=1;value[2]<6;value[2]++)
for(value[3]=1;value[3]<6;value[3]++)
for(value[4]=1;value[4]<6;value[4]++)
{
if((value[0]>1)
&&(value[1]<5)
&&(value[2]==value[3]+1)
&&(value[3]==value[2]+1)
&&(value[4]>value[2]))
for(i=0;i<5;i++)
编到这之后然后怎么编?不会了 求各位帮帮忙,谢谢拉!!!
不知道之前的对不
搜索更多相关主题的帖子: 公寓 
2007-06-28 21:21
ashencs
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-26
收藏
得分:0 
还有 编写多个函数分别实现上述功能,再能提醒一下吗,谢谢!
2007-06-28 21:27
ashencs
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-26
收藏
得分:0 
怎么没人?
。。。。。。。。。。。。。。
2007-06-29 12:06
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
直接输出就好,你是模仿的那个置顶题目吧?
很好,不过你有个错误,cd上下楼,你那里条件c=d+1 d=c+1应该是或关系不是与关系。
我在你代码基础上改了下,你参照,不过一定要读懂。

#include <iostream>
using namespace std;
//现有五层的公寓分配给A、B、C、D、E五个人住。其中A不住1楼,B不住5楼,
//C和D住上下楼(可以C比D住的高,也可以D比C住的高),E比C住的高。

int main(){
char name[]={'A','B','C','D','E'};
int i,value[5];
for(value[0]=1;value[0]<6;value[0]++)
for(value[1]=1;value[1]<6;value[1]++)
for(value[2]=1;value[2]<6;value[2]++)
for(value[3]=1;value[3]<6;value[3]++)
for(value[4]=1;value[4]<6;value[4]++)
{
if((value[0]>1)
&&(value[1]<5)
&&((value[2]==value[3]+1) || (value[3]==value[2]+1))
&&(value[4]>value[2])){
for(i=0;i<5;i++)
cout << name[i] << " " << value[i] << " ";
cout << endl;
}
}

system("pause");
}

[此贴子已经被作者于2007-6-29 19:27:43编辑过]


Fight  to win  or  die...
2007-06-29 12:22
ashencs
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-26
收藏
得分:0 

谢谢斑竹拉!!

2007-06-29 19:03
ashencs
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-6-26
收藏
得分:0 

回去试了下发现没考虑同在一层楼问题。
考虑不可以住在同一层楼的条件难不成是这样?
(value[0]!=value[1]&&value[0]!=value[2]&&value[0]!=value[3]&&value[0]!=value[4]&&value[1]!=value[2]&&value[1]!=value[3]&&value[1]!=value[4]&&value[2]!=value[3]&&value[2]!=value[4]&&value[3]!=value[4])
有没有简单点的
还有可以帮我整个改成多函数调用的形式吗,没学过函数调用

2007-06-30 18:02
天空の城
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-7-1
收藏
得分:0 
..........
for(value[4]=1;value[4]<6;value[4]++)
{
//________begin______// 增加判断相同楼层的情况!
map<int,int>mp;
for(i=0;i<5;i++)
mp[value[i]]++;
bool b=true;
for(i=0;i<5;i++)
b=b&&(!(mp[i+1]-1));
if(b)
//________end________//
if((value[0]>1)
....
}

2007-07-01 14:04
天空の城
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-7-1
收藏
得分:0 

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

void main()
{
int a[]={1,2,3,4,5};
char floor[]={'A','B','C','D','E'};
do
{
if((a[0]>1) && (a[1]<5) && (a[4]>a[2]) &&
((a[2]==a[3]+1)||(a[3]==a[2]+1)))
{
for(int i=0;i<5;i++)
cout << floor[i] << \" \" << a[i] << \" \";
cout << endl;
}
}while(next_permutation(a,a+5));
}


2007-07-01 19:14
天空の城
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-7-1
收藏
得分:0 

如果非要你老师说的那样,就象下面这样写吧!


#include <iostream>
#include <map>
#include <algorithm>
using namespace std;


void Floor1()
{
char name[]={'A','B','C','D','E'};
int i,value[5];
for(value[0]=1;value[0]<6;value[0]++)
for(value[1]=1;value[1]<6;value[1]++)
for(value[2]=1;value[2]<6;value[2]++)
for(value[3]=1;value[3]<6;value[3]++)
for(value[4]=1;value[4]<6;value[4]++)
{
map<int,int>mp;
for(i=0;i<5;i++)
mp[value[i]]++;
bool b=true;
for(i=0;i<5;i++)
b=b&&(!(mp[i+1]-1));
if(b)
if((value[0]>1) &&(value[1]<5) &&((value[2]==value[3]+1) || (value[3]==value[2]+1))
&&(value[4]>value[2]))
{
for(i=0;i<5;i++)
cout << name[i] << \" \" << value[i] << \" \";
cout << endl;
}
}
}
void Floor2()
{
int a[]={1,2,3,4,5};
char floor[]={'A','B','C','D','E'};
do
{
if((a[0]>1) && (a[1]<5) && (a[4]>a[2]) &&
((a[2]==a[3]+1)||(a[3]==a[2]+1)))
{
for(int i=0;i<5;i++)
cout << floor[i] << \" \" << a[i] << \" \";
cout << endl;
}
}while(next_permutation(a,a+5));
}

void main()
{
cout<<\"调用第一种方法获取楼层分配方案!\"<<endl;
Floor1();
cout<<\"调用第二种方法获取楼层分配方案!\"<<endl;
Floor2();
}


2007-07-01 19:21
terisevend
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-2
收藏
得分:0 
第二种方案懂得,第一种方案中的判断是否相等读不懂。。。望赐教。。。

2007-07-01 20:09
快速回复:求助!!关于穷举
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031890 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved