c++ c-oj 题聪明的员工怎么做?

问题描述

oj 题聪明的员工怎么做?

题目描述
小新是一家公司的员工,每个员工都有一个编号。每天上班时,老板都让员工排成一个队伍。但是,每次老板都对队伍的顺序不满意,于是老板重新编排新的队伍顺序,然后让员工按顺序排好。老板有特别要求,队伍每次只能将其中一个人移动到队头。聪明的小新很快想到最少移动次数使得队伍的顺序跟老板指定的顺序一样。愚蠢的老板不清楚小新是怎么做到的,聪明的你编写程序告诉ta。

输入
第一行是T(T<=10),代表数据的组数。
对于每组数据,第1行是一个整数n(2<=n<=30),代表员工的数量。第2行有n个数,代表员工一开始的队伍顺序的编号。第3行有n个数,代表老板要求的队伍顺序的编号。员工的编号为s(1<=s<=n),且不会重复。

输出
输出最少的移动次数。

样例输入
2
4
2 1 3 4
1 2 3 4
3
2 1 3
3 1 2
样例输出
1
2

解决方案

书本上都有的选择排序。

 public class ChoiceSort {

    public static void _choiceSort(Integer[] a) {
        if (a == null || a.length <= 0) {
            return;
        }
        for (int i = 0; i < a.length; i++) {
            int min = i; /* 将当前下标定义为最小值下标 */

            for (int j = i + 1; j < a.length; j++) {
                if (a[min] > a[j]) { /* 如果有小于当前最小值的关键字 */
                    min = j; /* 将此关键字的下标赋值给min */
                }
            }
            if (i != min) {/* 若min不等于i,说明找到最小值,交换 */
                int tmp = a[min];
                a[min] = a[i];
                a[i] = tmp;
            }
        }
    }
}

 public static void main(String[] args) {
        // TODO Auto-generated method stub
         Integer[] list={49,38,65,97,76,13,27,14,10};
         //快速排序
        /* QuicSort qs=new QuicSort();
         qs.quick(list);*/
         //冒泡排序
        /* BubbleSort bs=new BubbleSort();
         bs.bubble(list);*/
         //选择排序
         ChoiceSort._choiceSort(list);

         for(int i=0;i<list.length;i++){
             System.out.print(list[i]+" ");
         }
         System.out.println();
    }

解决方案二:

其实就是选择排序,要求交换次序足够少。

解决方案三:

如果你完全不懂选择排序,你没有做这道题的基础。换一句话说,给你代码,你也学习不到任何东西,等你学会了以后再来做题。

做题的目的是运用你的知识,而不是满足一种虚荣心或者自欺欺人。

解决方案四:

任何一本数据结构的书上都有。等你念到大学二年级就会学到。

解决方案五:

如果你真的想学,你就去学。掌握原理,而不是找个枪手做题后你复制粘贴下。
我确定如果你根本没有学过排序算法,这种题你是不可能做出来的。
要学的是你,不是我们。

解决方案六:

如果你学过了,知道大致方法,只是有的地方还没完全理解,那你看别人的程序才有收获。
好比你看了java的程序,你完全是看不懂的。因为原理你还是不掌握。
你这种把题目搬过来,再把答案搬回去,不是学习,只是满足下虚荣心而已。

时间: 2024-09-23 19:21:40

c++ c-oj 题聪明的员工怎么做?的相关文章

聪明的员工(c或c++)

问题描述 聪明的员工(c或c++) 题目描述 小新是一家公司的员工,每个员工都有一个编号.每天上班时,老板都让员工排成一个队伍.但是,每次老板都对队伍的顺序不满意,于是老板重新编排新的队伍顺序,然后让员工按顺序排好.老板有特别要求,队伍每次只能将其中一个人移动到队头.聪明的小新很快想到最少移动次数使得队伍的顺序跟老板指定的顺序一样.愚蠢的老板不清楚小新是怎么做到的,聪明的你编写程序告诉ta. 输入 第一行是T(T<=10),代表数据的组数. 对于每组数据,第1行是一个整数n(2<=n<=

c语言-一个OJ题,数字太大,计算机没法存储,如何解?

问题描述 一个OJ题,数字太大,计算机没法存储,如何解? http://219.218.128.149/JudgeOnline/problem.php?id=1261 这是这道题的地址,3个区域,A,B,C 开始在A,跳到别的区域,不能原地跳,且最后一次跳只能跳回A,输入跳的次数n,问一共有多少种跳法,最后把跳法数%10000,我算法已经弄好,但是发现跳法数太多,计算机无法存储,最高到2^1000,怎么解决? 解决方案 总结规律呗,不需要很多内存的

填空模式-Android中,要实现类似填空题的功能要怎么做?页面布局怎么办?

问题描述 Android中,要实现类似填空题的功能要怎么做?页面布局怎么办? 想实现类似下面的功能: <朝花夕拾>原名<________>,是________ 的回 忆性散文集,其中的主要人物有 :_________ 因为要填的内容长度不固定,因此页面布局要怎么做?想让固定的文字和变长的文字在同一行,大神能提供一点思路吗?该怎么做? 解决方案 http://download.csdn.net/download/zss793648186/7498449 解决方案二: 描述不是很清楚,

富士康招聘员工考做俯卧撑

漫话:企业招聘员工考做俯卧撑(崔泓 绘) 昨日在武汉一招聘现场,到富士康鸿准精密模具公司去应聘的15名学生被俯卧撑做"趴".考官用口令让一组学生间隔两秒完成一个动作.据该考官称,女生10个.男生20个为合格,男生30个为优秀.最后有15名男生因没做到20个俯卧撑被淘汰.相关人员表示,俯卧撑侧重肌肉耐力测试,对从事车床.搬运等上肢力量为主的工作比较合适.

写给不想做OJ题的C++学习者

[来信] 老师: 您好,我看了您的很多博客内容,想请教您一些问题. 以前自己跟着学校老师过过一遍基础的C++(谭浩强的书),现在打算自己好好的学C++,目前我也在看<C++ primer>,对语法知识和面向对象有了一定的理解(容器算法,模板方面还不太理解),现在我想做些题目,可是对OJ平台上的题目真是很烦(因为英语水平有限),往往不会去那么在意题目的细节,加上他评判的标准会不会太严格了,导致在细节上花了很多时间,而我只是想通过题目来巩固所学到的知识,并不是为了比赛去做题,也许做一些实例有帮助.

OJ题:输入一个多位的数字,求各数位相加。

题目内容: 输入一个多位的数字,1求各数位相加. 例如输入12345,则计算1+2+3+4+5=15 输入格式: 一个整数 输出格式: 一个整数 输入样例: 1234567890 输出样例: 45 时间限制:500ms内存限制:32000kb 实现程序: #include <stdio.h> #include <stdlib.h> #include <string.h> int cnt_count(int value) { int count = 0 , cnt = 0

OJ题:句子逆转

将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为"boy a am I"所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 接口说明 /** * 反转句子 *  * @param sentence 原句子 * @return 反转后的句子 */public String reverse(String sentence); 输入描述:将一个英文语句以单词为单位逆序排放. 输出描述:得到逆序的句子 输入例子:I am a b

OJ题:奇偶归一猜想——求归一过程中的最大值

题目: 题目内容: 奇偶归一猜想--对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1. 如n = 11,得序列:11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.(步骤中最大数是52) 题目输入正整数n,求这个n归一过程中的最大值 输入格式: 一个正整数 输出格式: 一个正整数 输入样例: 11 输出样例: 52 时间限制:500ms内存限制:32000kb 代码实现: #inclu

OJ题:字符串最后一个单词的长度

题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 程序如下: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char str[5000] = {0}; int count = 0 ,start; gets(str);