UNFounder
BAN USERvoid swap(char &a, char &b)
{
if(a == b)
return;
a = a + b;
b = a - b;
a = a - b;
}
void reverseStr(string &str)
{
int sz = str.size();
int p1 = 0, p2 = sz - 1, p3 = 0, p4 = 0;
while(p1 < p2)
swap(str[p1++], str[p2--]);
p1 = 0;
while(1)
{
while(p1 < sz && str[p1] == ' ')
p1++;
if(p1 == sz)
return;
p2 = p1 + 1;
while(p2 < sz && str[p2] != ' ')
p2++;
p2--;
p3 = p1;
p4 = p2;
while(p3 < p4)
swap(str[p3++], str[p4--]);
p1 = p2 + 1;
}
}
/////////// iterative
LinkNode *reverseLink(LinkNode *head)
{
if(head == NULL)
return NULL;
if(head->next == NULL)
return head;
if(head->next->next == NULL)
{
LinkNode *tail = head->next;
head->next->next = head;
head->next = NULL;
return tail;
}
LinkNode *pre = head;
LinkNode *current = head->next;
LinkNode *next = head->next->next;
while(next != NULL)
{
current->next = pre;
pre = current;
current = next;
next = next->next;
}
head->next = NULL;
current->next = pre;
return current;
}
////////////recursive
LinkNode *reverseLink(LinkNode *head)
{
if(head == NULL)
return NULL;
if(head->next == NULL)
return head;
LinkNode *next = reverseLink(head->next);
next->next = head;
head->next = NULL;
return head;
}
void teamName(int begin, int n, int k, vector<vector<int> > &name_seq, vector<int> &name)
- UNFounder January 06, 2013{
if(n < k)
return;
if(!k)
{
name_seq.push_back(name);
return;
}
name.push_back(begin);
teamName(begin + 1, n - 1, k - 1, name_seq, name);
name.pop_back();
teamName(begin + 1, n - 1, k, name_seq, name);
}
vector<vector<int> > teamName(int n, int k)
{
vector<vector<int> > name_seq;
vector<int> name;
teamName(1, n, k, name_seq, name);
return name_seq;
}