首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

一个标题和参加校园招聘会的题目

2013-10-19 
一个题目和参加校园招聘会的题目 今天听说是算法设计与分析上面的一道题目,很多题目自己扩展着多想一点还

一个题目和参加校园招聘会的题目

 今天听说是算法设计与分析上面的一道题目,很多题目自己扩展着多想一点还是很有意思的。


     题目大意:有3n个花盆,红色,蓝色和黄色的各n个。开始时排列的顺序是混乱的,如黄,红,蓝,黄,蓝,红。

     请编写一程序:将各花盆按红,黄,蓝,红,黄,蓝。。。的顺序排列,而且要求花盆之间的交换次数最少。

     题目应该只是把最终情况输出,然后求个最小步数。开始理解的是只有相邻的花盆才可以交换,不过好像都可以交换的。先分析下,如果改放红色的放了蓝色,而放了蓝色的也放了红色,这样的个数可以直接相抵消,然后步数+1。如果最后还有不能抵消的,a[1][2]统计的是该放1而放了2的花盆数目,a[1][2]=4,a[2][1]=0,因为开始已经相消了一次了。a[2][3]肯定不为0,因为2没有占到自己的位置,并且a[2][3]必须等于4,同理a[3][1]也必须等于4,这样交换的次数再加上4*2即可。自己是这样想的。也不知道具体对不对。附上代码。

string add(string s1,string s2)  {            int j,l,la,lb;      string max,min;      max=s1;min=s2;      if(s1.length()<s2.length())        {max=s2;min=s1;}      la=max.size();lb=min.size();      l=la-1;      for(j=lb-1;j>=0;j--,l--)         max[l] += min[j]-'0';       for(j=la-1;j>=1;j--)         if(max[j]>'9')            {max[j]-=10;max[j-1]++;}      if(max[0]>'9')         {max[0]-=10;max='1'+max;}      return max;  }  




后面有一个实际问题,两个相邻200m的交通灯,红灯有限制时间,绿灯也有限制时间,自己可以获取车流量与速度相关信息,建模写代码,使得车的通行量最大。当时就懵了,就瞎写写了。后面的题目问了些C#,html的问题表示什么都不会。写一个继承语句implement都没写出来。被虐了!!

热点排行