从10数中选出五个最大的 c语言程序设计

Python015

从10数中选出五个最大的 c语言程序设计,第1张

这办法很多,提供一个作参考——

#include "stdio.h"

#include <stdlib.h>

#include "time.h"

int main(int argv,char *argc[]){

int a[10],i,j,k

printf("Random 10 Numbers are as follows:\n")

srand((unsigned)time(NULL))

for(i=0i<10i++)

printf("%d ",a[i]=rand())

printf("\n\n5 largest number is as follows:\n")

for(i=0i<5i++){

for(k=i,j=k+1j<10j++)

if(a[k]<a[j])

k=j

if(k-i)

j=a[k],a[k]=a[i],a[i]=j

printf("%d ",a[i])

}

printf("\n\n")

return 0

}

运行结果如下:

我擦,这算法有些复杂,没搞对,弄了一个小时只弄出个全排列的,你看能改改不:

#include <stdio.h>

#define NUM 10

int main ()

{

int i, j, k, l, m, n, a[NUM]

n = 0

printf("Enter NUM numbers:\n")

for(i = 0i <NUMi++){

scanf("%d", &a[i])

}

for(i = 0i <NUMi++){

for(j = 0j <NUMj++){

if(i == j){

continue

}

for(k = 0k <NUMk++){

if(k == i || k ==j){

continue

}

for(l = 0l <NUMl++){

if(l == i || l == j || l == k){

continue

}

for(m = 0m <NUMm++){

if(m == i || m == j || m == k || m == l){

continue

}

printf("%d,%d,%d,%d,%d\n", a[i], a[j], a[k], a

[l], a[m])

n++

}

}

}

}

}

printf("Counts:%d\n", n)

return 0

}

这是一个回溯算法的经典例子,可以用下面的函数和程序实现,该程序整体看来主体只用一个循环语句,分为向前试探阶段和向后回溯阶段,需认真理解代码

#include <iostream.h>

const int maxn=100

int a[maxn]

void combback(int n,int r)

{

int i=0,j

a[i]=1

do{

if(a[i]-i<=n-r+1) //还可以向前试探

{

if(i==r-1) //已经找到一个组合输出

{

for(j=0j<rj++)

cout<<a[j]<<' '

cout<<endl

a[i]++

continue

}

i++ //向前试探

a[i]=a[i-1]+1

}

else //回溯

{

if(i==0)return //已经找完了所有解

a[--i]++

}

}while(1)

}

void main()

{

combback(10,5)

}