格式:DOC ? 页数:162页 ? 上传日期: 10:51:33 ? 浏览次数:5 ? ? 3000积分 ? ? 用稻壳阅读器打开
全文阅读已结束如果下载本文需要使用
最简单的解法把这个当做排列組合问题。然后把所有的排列组合结果带入到1-6这6个条件中进行检验最后把满足所有条件的组合结果输出即可。
把四人姓的代码储存在A[3]中 (用代码方便运算并节约空间,值全用int按格兰德、白思特、弗罗斯特和达特顺序为0-3)
四人名的代码储存在B[3]中 (莎莉=0,罗达=1,特雷西=2,万达=3)
树苗種类代码储存在C[3]中 (枫树=0,灰树=1樱桃=2,云杉=3)
同理院子位置代码D[3], (花园=0院子前=1,院子后=2天井=3)
种树日子E[3] (星期一=0,星期三=1星期四=2,星期五=3)
排列组合代码自行解决下假设每次生成结果用X数组储存,X[0]代表格兰德X[1]代表白思特……,X数组的每个元素结构如下:
arg1为指定巳知条件arg3为指定已知条件的值,arg2为指定返回条件返回值为arg2指定的返回项。
arg1和arg2的值为0、1、2、34分别代表姓、名、树苗种类、位置、日期伍个属性。
举例来说 s = find(X,2,32);这句话的含义就是找到X数组里树苗种类为樱桃的那条记录,返回它的栽种位置返回值写入s中。
1.姓弗罗斯特嘚人星期一种树;把树苗重在院子花园里的人是星期三种树;万达星期四种树;种枫树的人星期五种树
2.特雷西在姓达特的人之前种树,茬种灰树的那个人之后种树
3.姓白思特的那个人把自己的树重在了院子前面,她并不叫莎莉也没有在星期五种树。
4.罗达并没有在星期一種树
5.姓格兰德的人种树的时间比把树重在院子后面的人要早;罗达并没有种樱桃树。
当然这里还可以简化一下让万达和云杉这两个元素绑定起来。或者改进下数据结构比如用链表代替数组如果题目扩充也能稍做调整就可以完成运算。不过大致的思路就是这样了
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。