zoukankan      html  css  js  c++  java
  • codeup-C语言-数字交换

    Problem A: C语言-数字交换

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 1086  Solved: 391
    [Submit][Status][Web Board][Creator:Imported]

    Description

    输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。

    Input

    10个整数

    Output

    整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)

    Sample Input

    2 1 3 4 5 6 7 8 10 9

    Sample Output

    1 2 3 4 5 6 7 8 9 10 

     

    刚开始思考的时候,没有想到特殊情况,即最大值就在第一个位置。

    然后,看了别人的提示,自己写的时候,又把问题想复杂了,即:

    最大的在第一个 最小的在最后一个
    最大的在第一个 最小的不在最后一个
    最大的不在第一个 最小的在最后一个
    最大的不在第一个 最小的不在最后一个
    最大最小的值相同

    好歹,在codeup的OJ上通过了,但是这个思维真的很复杂。

    参看别人的代码,只分了  最大值就在or不在第一个位置   两种情况。

    大神代码连接:https://blog.csdn.net/nanke_4869/article/details/99655220

    我的代码:

    #include <iostream> 
    #include <vector>
    using namespace std;
    
    void exchange(int &a, int &b){
        int temp = a;
        a = b;
        b = temp;
    }
    
    int main(){
        vector<int> v;
        int temp, maxn, minn, k1, k2;
        while(scanf("%d", &temp) != EOF){
            v.clear();
            k1 = 0;
            k2 = 0;
            maxn = temp;
            minn = temp;
            v.push_back(temp);
            for(int i=1; i<10; i++){
                scanf("%d", &temp);
                if(maxn < temp){
                    maxn = temp;
                    k1 = i;
                }
                if(minn > temp){
                    minn = temp;
                    k2 = i;
                }
                v.push_back(temp);
            }
            //最小与第一个交换
            if(k1 != k2){
                if(k1 != 0){ //最大的不在第一个 
                    exchange(v[0], v[k2]);
                    if(k1 != 9){ //最大的已在最后一个 
                        exchange(v[9], v[k1]);
                    }
                }else{ //最大的在第一个 
                    if(k2==9){ //最小的在最后一个 
                        exchange(v[0], v[9]);
                    }else{
                        //注意要先把最大的放在最后一位! 
                        exchange(v[9], v[k1]);
                        exchange(v[0], v[k2]);
                    }
                }
            }
            for(int i=0; i<10; i++){
                printf("%d ", v[i]);
            }
            printf("
    ");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    matplotlib数据可视化之柱形图
    xpath排坑记
    Leetcode 100. 相同的树
    Leetcode 173. 二叉搜索树迭代器
    Leetcode 199. 二叉树的右视图
    Leetcode 102. 二叉树的层次遍历
    Leetcode 96. 不同的二叉搜索树
    Leetcode 700. 二叉搜索树中的搜索
    Leetcode 2. Add Two Numbers
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/heyour/p/12157096.html
Copyright © 2011-2022 走看看