ก่อนอื่นเลยนี่โค้ด Permutation ของผม Input เป็นจำนวนเต็ม N Output ออกมาเป็น Permutations ทั้งหมดที่เป็นไปได้ของจำนวนเต็มตั้งแต่ 1 ถึง n
เขียนด้วย Backtracking ครับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
[open_code]
#include <stdio.h>
int permutation(int a[],int j,int num)
{
int i;
if(j==num)
{
for(i=0;i<num;i++)
{
printf("%d ",a);
}
printf("\n");
return 1;
}
else
{
for(i=j;i<num;i++)
{
swap(&a,&a[j]);
permutation(a,j+1,num);
swap(&a,&a[j]);
}
}
}
void swap(int* a,int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
main()
{
int a[100000],n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
a = i+1;
}
permutation(a,0,n);
}
[/close_code]
ปัญหาคือ Output ที่ได้มันไม่เรียงตามหลัก Permutation ที่ควรจะเป็นน่ะครับ มันเป็นแบบนี้
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 3 2 // เริ่มมั่วตั้งแต่ตรงนี้ จริงๆแล้ว 1 4 2 3 ต้องมาก่อน
1 4 2 3
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 3 1
2 4 1 3
3 2 1 4
3 2 4 1
3 1 2 4
3 1 4 2
3 4 1 2
3 4 2 1
4 2 3 1
4 2 1 3
4 3 2 1
4 3 1 2
4 1 3 2
4 1 2 3
อยากหาวิธีแก้น่ะครับ ไม่รู้จะแก้ยังไงดีให้เลขมันเรียง วานผู้รู้ช่วยด้วยครับ
// ครอบ code แล้วนะ แต่ก้ามปู I ก็ยังหายอยู่ดีแหะ
Sorted Permutation ทำยังไงดีครับ
เขียนด้วย Backtracking ครับ
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
ปัญหาคือ Output ที่ได้มันไม่เรียงตามหลัก Permutation ที่ควรจะเป็นน่ะครับ มันเป็นแบบนี้
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
อยากหาวิธีแก้น่ะครับ ไม่รู้จะแก้ยังไงดีให้เลขมันเรียง วานผู้รู้ช่วยด้วยครับ
// ครอบ code แล้วนะ แต่ก้ามปู I ก็ยังหายอยู่ดีแหะ