问个大佬们很简单的问题,生成一个五位数
五位数,不包含4。随机输出一个数,并统计所有可能的结果(个数),这样的数有?种
用c语言,或者py,不能用过滤,不用正则。
这不应该在悬赏区,你发错地方了吧! int strcmp(char *a, char *b);
对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。
random 5个随机数,然后用上面的函数一个一个的查,
符合的放在变量里,不符合的放另一个,
循环函数用for,无限循环 for ( ; x != leth ; )
本帖最后由 lyl610abc 于 2021-3-19 18:42 编辑
说一下思路:
int arr={0,1,2,3,5,6,7,8,9};
从arr中任取五个数(去掉开头为0的)
算了补上C的代码(其实就是组合数稍微改改)
int out2;
void combine2(int arr[],int n,int m){
int i,j;
if(cnt==m){
if(out2!=0){
for(j=0;j<m;j++){
printf("%d ",out2);
}
printf("\n");
}
return;
}
for(i=0;i<n;i++){
if(vis==0){
vis=1;
out2=arr;
cnt++;
combine2(arr,n,m);
vis=0;
cnt--;
}
}
}
int main(int argc, char* argv[])
{
int arr={0,1,2,3,5,6,7,8,9};
combine2(arr,9,5);
return 0;
}
lyl610abc 发表于 2021-3-19 18:09
说一下思路:
int arr={0,1,2,3,4,6,7,8,9};
从arr中任取五个数(组合数的算法)
这思路爱了爱了 本帖最后由 ligxi 于 2021-3-19 18:31 编辑
import itertools
import random
# 不含4
number_list = ['0', '1', '2', '3', '5', '6', '7', '8', '9']
five_digit_number_list = []
for i in itertools.product(number_list, repeat=5):
data = str(int(''.join(i)))
if len(data) == 5:
five_digit_number_list.append(data)
# 随机取一个值
print(random.choice(five_digit_number_list))
# 总个数
print(len(five_digit_number_list)) lua:
local enum={0,1,2,3,5,6,7,8,9}
local i = math.random(1,#enum)
local total = 0
for i=2,#enum do
for j=1,#enum do
for k=1,#enum do
for l=1,#enum do
for m=1,#enum do
print(enum..enum..enum..enum..enum)
total = total + 1
end
end
end
end
end
print('total:'..total) qianshang666 发表于 2021-3-19 18:28
这思路爱了爱了
我怀疑我老年痴呆了
要求不包含4,我把5去掉了{:301_973:} 5^9个
生成的过程中也有可能重复 额,是这样的?
9*10*10*10*10 =90000 个五位数
不能有4,8*9*9*9*9 = 52488 个
代码大概意思就是:
****
每一位都随机,但不包括4。
第一位不包括0.
页:
[1]
2