-
素数判断
bool isprime(int n) { if(n <= 1) return false; int sqr = int(sqrt(n * 1.0)); for(int i = 2; i <= sqr; i++) { if(n % i == 0) return false; } return true;
-
十进制转d进制
int n, d;//n为十进制数,d为转换的目标进制 int len = 0, arr[100]; do{ arr[len++] = n % d; n = n / d; }while(n != 0);
-
d进制(10进制以内)转十进制
int n = 0, arr[100];//arr为d进制数 for(int i = 0; i < len; i++) { n = n * d + arr[i]; }
-
d进制(可包含字母)转十进制
//给定一个数值和一个进制,将它转化为10进制。转化过程中可能产生溢出 long long convert(string n, long long radix) { long long sum = 0; int index = 0, temp = 0; for (auto it = n.rbegin(); it != n.rend(); it++) { temp = isdigit(*it) ? *it - '0' : *it - 'a' + 10; sum += temp * pow(radix, index++); } return sum; }
-
回文判断
int flag = 0; for(int i = 0; i < index / 2; i++) { if(arr[i] != arr[index-i-1]) { printf("No\n"); flag = 1; break; }
-
科学计数法:PAT题目1060*
-
广度优先搜索(BFS)
void BFS(int s) { queue<int> q; q.push(s); while(!q.empty()) { //取出队首元素top //访问队首元素top //将队首元素出队 //将top的下一层结点中未曾入队的结点全部入队,并设置为已入队 } }
-
判断二叉树是否为完全二叉树
算法思路:
根据完全二叉树的定义,对完全二叉树按照从上到下、从左到右的层次遍历,应该满足一下两条要求:
- 某节点没有左孩子,则一定无右孩子
- 若某节点缺左或右孩子,则其所有后继一定无孩子
若不满足上述任何一条,均不为完全二叉树。
int isComplete = 1, after = 0; //传入参数为二叉树的根节点 void levelOrder(node *tree) { queue<node *> queue; queue.push(tree); while(!queue.empty()) { node *temp = queue.front(); queue.pop(); //v.push_back(temp->v); //访问元素 if(temp->lchild != NULL) { if(after) isComplete = 0; queue.push(temp->lchild); } else { after = 1; } if(temp->rchild != NULL) { if(after) isComplete = 0; queue.push(temp->rchild); } else { after = 1; } } }
PAT常用易错算法(2021持续更新)
最新推荐文章于 2021-08-12 11:03:00 发布