流程图:
#include<iostream>
#include<vector>
#include<map>
using namespace std;
vector<string> str{ "暗斑点","长脖子","长腿","奶","蹄" };
map<int, string> rule
{
{1,"哺乳动物"}, //r1
{2,"哺乳动物"}, //r2
{3,"鸟"}, //r3
{4,"鸟"}, //r4
{5,"肉食动物"}, //r5
{6,"肉食动物"}, //r6
{7,"有蹄类动物"}, //r7
{8,"有蹄类动物"}, //r8
{9,"金钱豹"}, //r9
{10,"虎"}, //r10
{11,"长颈鹿"}, //r11
{12,"斑马"}, //r12
{13,"鸵鸟"}, //r13
{14,"企鹅"}, //r14
{15,"信天翁"} //r15
};
bool noHave(string s)
{
for (auto x : str)
if (x == s)
{
return 0;
}
return 1;
}
bool Have(string s)
{
for (auto x : str)
if (x == s)
{
return 1;
}
return 0;
}
int main()
{
for (auto r : rule)
{
if (r.first == 1)
{
if (Have("毛发") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 2)
{
if (Have("奶") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 3)
{
if (Have("毛发") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 4)
{
if (Have("会飞") && Have("会下蛋") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 5)
{
if (Have("吃肉") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 6)
{
if (Have("犬齿") && Have("爪") && Have("眼盯前方") && (r.first == 1))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 7)
{
if (Have("哺乳动物") && Have("蹄") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 8)
{
if (Have("哺乳动物") && Have("反刍动物") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 9)
{
if (Have("哺乳动物") && Have("食肉动物") && Have("黄褐色") && Have("暗斑点") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 10)
{
if (Have("哺乳动物") && Have("食肉动物") && Have("黄褐色") && Have("黑色条纹") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 11)
{
if (Have("有蹄类动物") && Have("长脖子") && Have("长腿") && Have("暗斑点") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 12)
{
if (Have("有蹄类动物") && Have("黑色条纹") && Have("") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 13)
{
if (Have("鸟") && Have("长脖子") && Have("长腿") && Have("不会飞") && Have("黑白二色") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 14)
{
if (Have("鸟") && Have("会游泳") && Have("不会飞") && Have("黑白二色") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
if (r.first == 15)
{
if (Have("鸟") && Have("善飞") && noHave(r.second))
{
str.push_back(r.second);
cout << "规则r" << r.first << " 加入: " << r.second << endl;
}
}
}
cout << "综合数据库内容: ";
for (auto x : str) cout << x << " ";
cout << endl;
return 0;
}
Run
[执行完成,耗时:0 ms]