gotoxy(int x,int y)函数的使用。

因为C++标准库中没有这个函数,使用的时候需要自己定义

void gotoxy(int x, int y) {
    COORD pos;
    pos.X = x,pos.Y = y;
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
    SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
}

在输出的时候,可以把光标移动到任意位置,但要注意x,y的范围:在DOS输出窗口中,从左向右为x方向,且下标从0开始;用上向下为y方向,下标从0开始。
在做一些杂题需要很烦人的输出的时候,这个函数是个不错的选择!
慎用!!!

全排列next_permutation函数

next_permutation(begin,end);
begin,end可以是数组的起始,终止地址,也可以是string的起始,终止迭代器,也可以是vector的起始,终止迭代器。
函数会改变元容器的值的顺序,使其变成原排列的下一个排列,如果原序列还存在下一个排列,则函数返回0;否则返回1。即原序列递减时,函数返回1.
注意:next_permutation()函数是自动去重的
与下一个全排列对应的是上一个全排列函数prev_permutation().
还有leetcode里,使用sort函数时,若要重新定西排序方式,cmp函数如果写在类里面的话一定要加上static关键字,类外可不加。
因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中调用非静态成员函数。静态成员函数或者全局函数是不依赖于具体对象的, 可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态。所以要加上static关键字。
leetcode 46.permutation

class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> ans;
        ans.push_back(nums);
        while (next_permutation(nums.begin(),nums.end()))
            ans.push_back(nums);
        return ans;
    }
};
string类 += 和 + 的区别

str = str + s:先把等号右边的两个string对象相加得到一个新的对象,然后再把新对象复值给str
str += s:直接在str后面接上s


0 条评论

发表评论

邮箱地址不会被公开。