C/C++语言解决概率问题

来源:百度知道 编辑:UC知道 时间:2024/04/26 22:13:20
有七个七位数
分别统计个位、十位、百位、千位……中出现概率最大的数
从而组合出一个新的七位数,也是最可能出现的数。
另:如果概率相同的数字出现,则根据其他位来淘汰剩下一个概率最高的
如:
这七个数的个位数为:5、1、1、5、5、2、3 最可能出现的是5
这七个数的十位数为:9、3、8、8、7、1、3 最可能出现的是8或3
……百、千……位以此类推。则我们得到的数应该为……85

下面是我写的程序,有点乱,不过还能工作,希望对你有帮助
#include<stdio.h>
int main()
{
int times[10];//记录十个数在不同数位上出现的次数,以取得频率最高的
int nums[]={1234567,1234567,1234567,1234567,1234567,1234567,1234567};
int k[]={
1000000,
100000,
10000,
1000,
100,
10,
1,
};
int results[7]; //保存各个数位上频率最高的数,也是最终的结果
int i,p;

int temp=0; int pos=0; int max=0;

for(p=0;p<7;p++) //分别求7个数
{
for(i=0;i<10;i++) times[i]=0;
for(i=0;i<7;i++) //分别求7个数相同为上的值
{
temp=(int)nums[i]/k[p];
nums[i]-=temp*k[p];
times[temp]++;
}
max=0;
for(i=0;i<10;i++)
{
if(max<=times[i])
{
pos=i;
max=times[i];
}
}
results[p]=pos; //取得最大为值
}

for(i=0;i<7;i++)
printf("%d",results[i]);

}