请高手帮忙查查错~~~

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:51:56
程序如下:
main()
{
int a[11],b[100]={0},c[10];
int i,k=1,l,t,s=0;
a[0]=0;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(c[0]=0;c[0]<11;c[0]++)
for(c[1]=0;c[1]<11;c[1]++)
for(c[2]=0;c[2]<11;c[2]++)
{if(c[2]==c[1]) continue;
for(c[3]=0;c[3]<11;c[3]++)
{if(c[3]==c[1]||c[3]==c[2]) continue;
for(c[4]=0;c[4]<11;c[4]++)
{if(c[4]==c[1]||c[4]==c[2]||c[4]==c[3]) continue;
for(c[5]=0;c[5]<11;c[5]++)
{if(c[5]==c[1]||c[5]==c[2]||c[5]==c[3]||c[5]==c[4]) continue;
for(c[6]=0;c[6]<11;c[6]++)
{if(c[6]==c[1]||c[6]==c[2]||c[6]==c[3]||c[6]==c[4]||c[6]==c[5]) continue;
for(c[7]=0;c[7]<11;c[7]++)
{if(c[7]==c[1]||c[7]==c[2]||c[7]==c[3]||c[7]==c[4]||c[7]==c[5]||c[7]==c[6]) continue;
for(c[8]=0;c[8]<11;c[8]++)
{if(c[8]==c[1]||c[8]==c[2]||c[8]==c[3]||c[8]==c[4]||c[8]==c[5]||c[8]==c[6]||c[8]==c[7]) continue;
for(c[9]=0;c[9]&l

显然b[100]这个数组不够存
如果从c[0] c[1] c[2]都等于0开始 c[3]开始变化 c[3]到c[9] 有7个 他们7个从1到10之间取值 只要满足互不相等
如果学过排列组合就知道有 A(7,10)=10!/3!=10*9*8*7*6*5*4 已经远远超过100
c[0] c[1]等于 0从c[2]开始 更多A(8,10)

c[0]等于0 c[1]开始 A(9,10)

c[0]到c[9]在1到10之间变化A(10,10)=10!

一共执行A(7,10)+A(8,10)+A(9,10)+A(10,10)

你用这个程序试试看 限定了100
输入10个数没错误 等一段时间后就会给出结果
因为程序执行次数太多了

#include <stdio.h>
#include <string.h>
int main()
{
int a[11],b[100]={0},c[10];
int i,k=1,l,t,s=0;
a[0]=0;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(c[0]=0;c[0]<11;c[0]++)
for(c[1]=0;c[1]<11;c[1]++)
for(c[2]=0;c[2]<11;c[2]++)
{
if(c[2]==c[1])
continue;
for(c[3]=0;c[3]<11;c[3]++)
{
if(c[3]==c[1]||c[3]==c[2])
continue;
for(c[4]=0;c[4]<11;c[4]++)
{
if(c[4]==c[1]||c[4]==c[2]||c[4]==c[3])
continue;
for(c[5]=0;c[5]<1