问题:写个算法:部落酋长如何能交换到斧头描述:酋长有颗宝石,想换把斧头
巫师很多水果,想换宝石
猎人有猎物羚羊,想换水果
小朋友有把斧头,想换猎物羚羊表名称: sku字段:id name have WantTo
--------------------------------------
1 酋长 宝石 斧头
2 巫师 水果 宝石
3 猎人 羚羊 水果
4 小朋友 斧头 羚羊要求 : 1:程序处理可以使用简单的伪代码实现
2:SQL 语句需要写完整
巫师很多水果,想换宝石
猎人有猎物羚羊,想换水果
小朋友有把斧头,想换猎物羚羊表名称: sku字段:id name have WantTo
--------------------------------------
1 酋长 宝石 斧头
2 巫师 水果 宝石
3 猎人 羚羊 水果
4 小朋友 斧头 羚羊要求 : 1:程序处理可以使用简单的伪代码实现
2:SQL 语句需要写完整
1、如果是ORACLE数据库,直接start with connect by就能把所有递归东西拿出来,用法不具体说了
2、SQL+JAVA处理如下:
数据结构:Stucture Exchange:(ID, Name, have, WantTo)
数据取得:Data: List<Exchange> list = "Select ID, Name, have, WantTo from City Order by have";StringBuffer output = new StringBuffer();
firstNode = (Exchange)list.get(0)
visit(firstNode.WantTo);
// 递归算法
private void visit(Integer WantTo) {
for (Exchange node : list) {
if (node.have == WantTo) {
output.append(WantTo + " -> " + node.name + "." + node.have + "\n");
list.remove(node);
if (!"斧头").equals(node.have)) visit(node.have);
return;
}
}
}