//编程实现求出若干整数之和为500的连续整数(如98,99,100,101,102)的所有组合
///产生一个int数组,长度为100,并向其中随机插入1~100,要求不能重复
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
class Sum500
{
static void Main(string[] args)
{ 编程实现求出若干整数之和为连续整数(如98,99,100,101,102)的所有组合
//showSreialNumberSum500();
产生一个int数组,长度为100,并向其中随机插入1~100,要求不能重复
showArrayDistinctNum();GetRandomUnrepeatArray();两种实现方式
int []arr=new int[50];
arr=GetRandomUnrepeatArray(1,100,50);
for (int i = 0; i < 50; i++)
Console.Write("{0} ", arr[i].ToString());
Console.ReadLine();
}
//
public static int[] GetRandomUnrepeatArray(int minValue, int maxValue, int count)
{ //思路?:先利用 Random.NextBytes 方法得到一个随机数字节数组,然后利用 Array.Sort 的重载方法用这个随机数字节数组将顺序源数组排序为乱序,最后 Copy 出结果集。
Random rnd = new Random();
int length = maxValue - minValue + 1;
byte[] keys = new byte[length];
rnd.NextBytes(keys);
int[] items = new int[length];
for (int i = 0; i < length; i++)
{
items[i] = i + minValue;
}
Array.Sort(keys, items);
int[] result = new int[count];
Array.Copy(items, result, count);
return result;
}
private static void showArrayDistinctNum()
{思路:采取先获取一个随机数再查找有无重复之后加入结果集
//int[] arr=new int[100];
ArrayList array = new ArrayList();
Random rnd = new Random();
while (array.Count <= 50)
{ int num = rnd.Next(1,101);
if (!array.Contains(num))
array.Add(num);
for (int i = 0; i < 50; i++)
Console.Write("{0} ", array[i].ToString());
}
//int []arr=new int[50];
//for(int i=0;i<50;i++)
// arr[i]=rnd.Next(1, 101);
//for (int i = 0; i < 50; i++)
// Console.Write("{0} ", arr[i].ToString());
}
static void showSreialNumberSum500()
{编程实现求出若干整数之和为连续整数(如98,99,100,101,102)的所有组合
for (int i = 1; i < 250; i++)
{
int j = i;
int s = i;
while (s < 500)
{
j++;
s = s + j;
}
if ((j != i) && (s == 500))
{
for (int k = i; k <= j; k++)
{ Console.WriteLine("{0}", k); }
Console.WriteLine();
}
}
}
}
}
实现求出若干整数之和为500的连续整数(如98,99,100,101,102)的所有组合&&产生一个int数组,长度为100,并向其中随机插入1~100,要求不能重复
最新推荐文章于 2022-09-04 21:05:31 发布