固定位数的全排列
void Perm(int* array, int size, int N)
{
if (N == size)
{
for (int i = 0; i < N; i++)
cout << array[i] << " ";
cout << endl;
}
else
{
for (int i = N; i < size; i++)
{
swap(array[i], array[N]);
Perm(array, size, N + 1);
swap(array[i], array[N]);
}
}
}
int main()
{
int array[] = { 1, 2, 3, 4 };
Perm(array, sizeof(array) / sizeof(array[0]),2);
getchar();
return 0;
}
括号匹配:
bool Isbracket(char c)
{
if (c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}')
return true;
return false;
}
bool Matchbracket(char* array)
{
stack<char> s;
size_t size = strlen(array);
for (size_t i = 0; i < size; i++)
{
if (!Isbracket(array[i]))
continue;
if (array[i] == '(' || array[i] == '{' || array[i] == '[')
{
s.push(array[i]);
continue;
}
else
{
if (s.empty())
{
cout << "右括号多与左括号" << endl;
return false;
}
if (array[i] == ')'&&s.top() == '(' ||
array[i] == ']'&&s.top() == '[' ||
array[i] == '}'&&s.top() == '{')
{
s.pop();
}
else
{
cout << "括号不匹配" << endl;
return false;
}
}
}
if (s.empty())
{
cout << "括号匹配正确" << endl;
return true;
}
else
{
cout << "左括号多与右括号" << endl;
return false;
}
}
int main()
{
char* arr1 = "gao{[]()}";
char* arr2 = "{jia[sha}]";
char* arr3 = "(bi){haha";
char* arr4 = "bao(bao))";
Matchbracket(arr1);
Matchbracket(arr2);
Matchbracket(arr3);
Matchbracket(arr4);
getchar();
return 0;
}