一个题目和参加校园招聘会的题目
今天听说是算法设计与分析上面的一道题目,很多题目自己扩展着多想一点还是很有意思的。
题目大意:有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都没写出来。被虐了!!