其实这不算一个黄道吉日,一个真俗称的“大虾”的人物开始了漫长的揹包生活。在往日的数学世界里,一段引理、一句定理、一撮例子、一卷练习,就如口嚼核桃一般,说不出的痛楚。那么大虾这个人就可以用一个引理开始:人生的最优解就是通过每一天最优解来达到,因此有了贪心是人一生的追求;比如大虾是一个贼,只带了一个大包,去偷珠宝店,那么他的希望是什么呢?用最少的资源带走最有价值的东东们,只可惜慌忙之中也不知道哪些该放弃哪些该拿下。我们又何尝不是,在遇到真正需要抉择的时候却犹豫不绝,那么或许有方法可以破这个局。
大虾顺利逃过这次“窃劫”,回到家里做了一件大事:首先把所偷东西按照体积大小排列一遍,再按照价值大小排列一遍,然后用价值所在的名次减去体积所在的名次,列了这样一张表,他心想如果某个珠宝所算负的越大越是值钱的。但是不管怎么算,结果都是0,他在苦思冥想,难道总的来说都是这次偷窃的好坏各半?最终自我安慰的说,事前没有调查珠宝店的均值,而且掰着手指头算了算,幸运的是这次还是负数的多一些,随手还是占了便宜。
固步自封最后只能在0的世界里。必须得“出”!!!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 10
void sort(int *val, int *index, int num)
{
int i, j, k, temp, x[NUM];
for (i = 0; i < num; i++)
{
x[i] = val[i];
}
for (i = 0; i < num - 1; i++)
{
k = i;
for (j = i + 1; j < num; j++)
if(x[k] < x[j]) k = j;
if (i != k)
{
temp = x[i];
x[i] = x[k];
x[k] = temp;
}
}
for (i = k = 0; i < num; i++)
{
if (i < num -1 && x[i] == x[i+1]) continue;
for (j = 0; j < num; j++)
{
if (x[i] == val[j]) index[k++] = j + 1;
}
}
for (i = 0; i < num; i++)
printf("x[%d] = %d index[%d] = %d\n", i, x[i], i, index[i]);
}
int main()
{
int i, sum = 0;
int index[NUM], value[NUM];
srand((unsigned int)time(NULL));
// 随机偷的东西,为了方便,随出来的就是按照体积大小排列的,其值是价值
for (i = 0; i < NUM; i++)
{
value[i] = rand() % 10;
printf("value[%d] = %d\n", i, value[i]);
}
// 回家排序
sort(value, index, NUM);
// 此时i=0是价值最大的珠宝,计算差值,并计算和
for (i = 0; i < NUM; i++)
{
index[i] = i - index[i] + 1;
sum += index[i];
printf("index[%d] = %d\n", i, index[i]);
}
printf("sum = %d\n", sum);
return 0;
}
怎么出?或者说是怎么破?大虾又在为下一次思考了。突然想起一直令中国青年热血沸腾的话题,钓鱼岛。同时大虾也是个火影迷,在每周四的跟剧下,发现其主题,其渲染给国人的是有爱,爱好和平,放弃过去的憎恨。当然大虾没去过日本,不知道日本的小伙伴是否也是火影迷。作为一个盗贼,也开始忧国忧民,思考起来了国家大事,想起最近播放的大秦帝国之纵横,目前的中国更像战国时的秦朝,因为逐渐强大的国力而“东出”,而如今中国不正在出海嘛。虽然现在没有战国时候的战火,但是当前世界的硝烟还在弥漫,偶尔也有军队发到国国之边疆溜溜。
大虾经常上网打游戏,想起来游戏里的战国地图,百度了一下,突然发现:秦不正与现在的正在逐步强大中国类似,齐犹如美国唯利是图,楚是印度自大盲目,魏像日本挑衅不断,韩是朝鲜半岛跟着大国不服输,燕是俄罗斯。简直太像了,新一轮的领导人的外交更像了,如今的军备竞赛,媒体,偶尔的示威,孙子兵法有云:上兵发谋,其次伐交,其次发兵,其下攻城。
对了,破的方法正是张仪的合纵连横。大虾拿着笔发呆或者思考一番,看着这个图,这不正是一张图嘛,当然图中画的是一个简单的图。现在缺少的只是权值,权值乃为谋啊。难道中国目前正在追赶美国,若以秦为起点,齐为终点,便就是秦到齐的单源最短路径?那么该如何定义这张图呢?下期再见。