首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个换数的有关问题?请高手帮帮忙?多谢

2012-03-18 
一个换数的问题??请高手帮帮忙??谢谢一个程序,意思是:第一行输入一个整数t(1 t 20)代表数组的个数。第2

一个换数的问题??请高手帮帮忙??谢谢
一个程序,
                意思是:
                第一行输入一个整数   t     (1 <=t <20)     代表数组的个数。
                第2行输入一个整数   n         (1 <=n <=10000)   代表第一个数组的大小。
                第3行输入的是数组。             --〉输入第一个数组元数
                第4行输入的是n   ;               --》第2   个数组的大小
                第5行是   数组          
                                        :
                                        :    
     
        然后就是依次输出每一个数组换数的最小次数~~~~                                   :

        程序是~~~~~~~~~~~~~~~~~~~~~:
         


  #include   <stdio.h>
int   main()
{
int   t;
int   num[10001];
scanf( "%d ",&t);

while(t--)
{
int   n,s,i,j;
scanf( "%d ",&n);
i=1;
while(i <=n)
{
scanf( "%d ",num+i);
++i;
}

s=0;
for   (i=1;i <=n   ;++i   )
{
while   (num[i]!=i)
{
j=num[i];                             /*我想问一下这个地方是怎么换数的*/
num[i]=num[j];                     /*像这样他什么就可以达到目的*/
num[j]=j;
s++;
}
}

printf( "%d\n ",s);  
}
return   0;
}


[解决办法]
j=num[i]; /*我想问一下这个地方是怎么换数的*/
num[i]=num[j]; /*像这样他什么就可以达到目的*/
num[j]=j;

这里不就是通过一个变量j作为临时存储交换之用来实现的,楼主自己模拟一下不就理解了
[解决办法]
j=num[i];//把num[i]的值给j,比如是2,3之类的
num[i]=num[j]; //这个是把数组下标为i,j的值进行交换
num[j]=j;//num[j]等于j
总的来说呢就是把当前数组元素的值比如N与下标等于此值(N)的数组元素(其实就是与数组的第N+1项)进行交换

[解决办法]
/*像这样他什么就可以达到目的*/
达到的目的就是让num[n]=n;
[解决办法]
关注

热点排行