杭电acm吧 关注:271贴子:292
  • 1回复贴,共1

【南阳理工OJ】题目19--擅长排列的小明

只看楼主收藏回复

http://acm.nyist.net/JudgeOnline/problem.php?pid=19
AC:
#include <iostream>
#include <vector>
using namespace std;
int arr[10] = {0,1,2,3,4,5,6,7,8,9};
vector<int>v;
int m,n; //[1...m]中前n个
bool isIn(int value)
{
int i,size;
size = v.size();
for(i=0; i<size; i++)
{
if(value == v[i])
{
return true;
}
}
return false;
}
void next(int m,int n)
{
int i;
int size = v.size();
if(size == n)
{
for(i=0; i<size; i++)
{
cout<<v[i];
}
cout<<endl;
return;
}
for(i=1; i<=m; i++)
{
if( isIn(i) )
{
continue;
}
v.push_back(i);
next(m,n);
v.erase(v.end()-1,v.end());
}
}
int main()
{
int ncase;
cin>>ncase;
while(ncase--)
{
cin>>m>>n;
next(m,n);
v.clear();
}
return 0;
}


IP属地:北京1楼2013-05-28 10:39回复
    解题思路:递归

    回溯时要把上次插入的值删除
    本吧交流QQ群:260147808


    IP属地:北京2楼2013-05-28 10:52
    回复