一个换数的问题??请高手帮帮忙??谢谢
一个程序,
意思是:
第一行输入一个整数 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;
[解决办法]
关注