• 编程实践53


    假定有一个数组,已经存放有互不相同的整数。输入一个数,要求从数组删除与该数相同的元素,并将其后的元素逐个向前替补,最后一个元素置0。输出删除后的数组。如原数组中无此数,则输出“无此数”。

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _5_3
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] dA;
                int i,j,dB;
                int ia;
    
                
    
                dA = new int[10];
                Random ran = new Random();
    
                for (i = 0; i < dA.Length; i++)
                {
                    dA[i] = Convert.ToInt32(ran.Next(1, 20));
                    Console.Write("{0} ",dA[i]);
                }
    
    
                Console.WriteLine("请输入一个数字:");
                dB = Convert.ToInt32(Console.ReadLine());
                ia = 0;
    
                for (i = 0; i < dA.Length; i++)
                {
                    if (dA[i] == dB)
                    {
                        dA[i] = 0;
                        ia++;
                        for (j = i + 1; j <= dA.Length-ia; j++)
                        {
                            dA[j - 1] = dA[j];
                        }
                        dA[dA.Length - ia] = 0;
                        i--;
                    }
                }
                if (ia == 0)
                {
                    Console.WriteLine("没有找到次数!");
                }
                else
                {
    
                    Console.WriteLine("删除相同元素后:");
                    for (i = 0; i < dA.Length; i++)
                    {
                        Console.Write("{0} ", dA[i]);
                    }
                }
    
    
                //Console.WriteLine("\n重新排列后:");
    
                //for (i = 0; i < dA.Length; i++)
                //{
                //    Console.Write("{0,2}", dA[i]);
                //}
                //for (i = 0; i < dA.Length; i++)
                //{
                //    for (j = 0; j < dA.Length - 1; j++)
                //    {
                //        if (dA[j] == 0)
                //        {
                //            dA[j] = dA[j] + dA[j + 1];
                //            dA[j + 1] = dA[j] - dA[j + 1];
                //            dA[j] = dA[j] - dA[j + 1];
                //        }
                //    }
    
    
                //}
                //for (i = 0; i < dA.Length; i++)
                //{
                //    Console.Write("{0} ", dA[i]);
                //}
                Console.ReadKey();
            }
        }
    }

    老师优化后效率高了很多。

  • 相关阅读:
    NYOJ 1073 最大值 (模拟)
    NYOJ 1063 生活的烦恼 (二叉树)
    NYOJ 1022 合纵连横 (并查集)
    [leetcode-553-Optimal Division]
    [leetcode-496-Next Greater Element I]
    [leetcode-556-Next Greater Element III]
    [leetcode-500-Keyboard Row]
    [leetcode-36-Valid Sudoku]
    [leetcode-127-Word Ladder]
    [leetcode-567-Permutation in String]
  • 原文地址:https://www.cnblogs.com/Wzqa/p/2780429.html
Copyright © 2020-2023  润新知