else
for(int i=left;i<=right;i++){
Swap(a,a[left],a[i]);//这里标记为1状态
perm(a,left+1,right);//这里标记为2状态,这里典型的下标越界
Swap(a,a[left],a[i]);//这里标记为3状态
}
你的本意是想将数组中的值进行交换是吧?但是for循环执行状态1,这里就成了 m=a[left],
n=a[i],然后再进行交换item=a[m]=a[a[left]]这里就明显有问题了,不是你想要交换的数组的值了
这是将数值的下标值和数组的值进行交换了,数组的值最大为9,明显超出了这个数组的下标值,
所以会出现下标越界
我把以上改成这样 就能运行了
else
for (int i = left; i <= right; i++) {
Swap(a, left, i);
perm(a, left + 1, right);
Swap(a, left, i);
}
for(int i=left;i<=right;i++){
Swap(a,a[left],a[i]);//这里标记为1状态
perm(a,left+1,right);//这里标记为2状态,这里典型的下标越界
Swap(a,a[left],a[i]);//这里标记为3状态
}
你的本意是想将数组中的值进行交换是吧?但是for循环执行状态1,这里就成了 m=a[left],
n=a[i],然后再进行交换item=a[m]=a[a[left]]这里就明显有问题了,不是你想要交换的数组的值了
这是将数值的下标值和数组的值进行交换了,数组的值最大为9,明显超出了这个数组的下标值,
所以会出现下标越界
我把以上改成这样 就能运行了
else
for (int i = left; i <= right; i++) {
Swap(a, left, i);
perm(a, left + 1, right);
Swap(a, left, i);
}
解决方案 »
- 关于多表关联的增删改查
- struts2-jquery-plugin 了解的帮我个忙````
- corba构件下载
- 在hibernate读取对象时遇到问题 java.lang.reflect.InvocationTargetException
- 為何Proxool不釋放連接?
- 请教大家Struts的<html:link>标签如何传对象给后台的Action
- 级联的问题,第一次用hibernage,请大家帮帮忙
- 请问大家jbpm的问题
- 一个比较简单的问题
- 请问怎么样用XML文件在程序之间交互数据(比如XML要在交互过程中以什么样的形态出现。)
- Tomcat坑我千百遍 我却待它如初见 配置好了也是开不了index
- WebService报错,求大神
for(int i=left;i<=right;i++){
Swap(a,a[left],a[i]);
perm(a,left+1,right);
Swap(a,a[left],a[i]);
}
当i为数组最后一个数时,此时的a[i] = 9; 而你此时传到这个方法
Swap(int a[],int m,int n)
时,n就成为9了,而你a[m]=a[n];,此时a[9]不就下标越界了吗,肯定会报数组下标越界异常啊。
你就直接传下标吧,不要传下标取的数了。
你把你的数组换成乱序的大一点的随机数,自己想一下就清楚了。