自己想出的算法!

今天看C Primer Plus 第十二章,突然看到了随机函数srand()和rand()的介绍, 当时书上举了一个玩骰子的例子。。。。。

    我突发奇想, 自己想出了一个算法题目、  

 题目如下:

输入一个数N

输出0~N直接的随机数字,并且报告各个数字出现了多少次、

报告数字的时候、 依次从小到大排序报告!

当N = q时退出循环

举例:

4
3 2 3 3
2  1
3  3
5
1 3 1 2 1
1  3
2  1
3  1
10
5 3 4 10 3 5 1 4 4 5
1  1
3  2
4  3
5  3
10  1
1
1
1  1
q

当时 我以为很简单。。。。 但是 事实我刚刚才完成、  一路上好多Bug 原谅我是算法渣渣..........

   花了一个多小时、才做出来  我也不知道这个算法是不是早就有了  但是这个题目确实是我自己想出来的 如果有一样的、 

原谅我把 我也不知道、、

  我写的代码如下:

#include <stdio.h>
#include <stdlib.h>
void rand_1 (int arr[], int);
int main()
{
int i, j;
while (scanf("%d",&i) == 1)
{
int arr[i];
srand((unsigned)time(NULL));
for (j = 0; j < i; j++)
{
arr[j] = rand() % i + 1;
printf("%d ",arr[j]);
}
rand_1(arr, i);
}
return 0;

void rand_1 (int arr[], int len)
{
int i, j, k, x, m, t;
int s1[len];
int s2[len];
m = 0;
for (i = 0; i < len; i++)
{
for (j = i, k = i + 1; k < len; k++)
if (arr[j] > arr[k])
j = k;
if (j != i)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
for (i = 0, j = 0; i < len; i++)
{
if (i == len - 1)
{
if (arr[i] == arr[i - 1])
{
s1[j] = arr[i];
}
}
if (arr[i] != arr[i + 1])
{
s1[j] = arr[i];
j++;
}
}
printf("\n");
for (i = 0; i < j; i++)
s2[i] = 1;
i = 0;
for (x = i, k = i + 1;k < len; k++)
{
if (arr[x] == arr[k])
++s2[m];
if (arr[x] != arr[k])
{
x = k;
m++;
}
}
for (i = 0; i < j; i++)
{
printf("%d  %d\n",s1[i], s2[i]);
}
return;
}

 在Dev cpp上运行 通过!

   记录一下、  2015年1月18日02:15:12 哈~   晚安咯  睡觉~~~  




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值