1.写出下面题目的源码程序代码(C++) 并且输入输出都截个 谢谢~
2.åµå
¥å¼ç³»ç»èªå¦
3.企业级自动代码静态分析器Helix QAC--从应用层级保证代码质量和安全(二)
写出下面题目的程序代码(C++) 并且输入输出都截个 谢谢~
//记的以前学校时写过,好像是源码POJ的题目。源代码还在电脑上留着,源码仅供参考
#include <iostream>
#include <cmath>
using namespace std;
const int MAXN = ;
const int MAXM = ;
const int MAXP = ;
const int MAXT = 6;
struct Tpoint {
int x,源码 y;
};
Tpoint u[MAXN],v[MAXN],w[MAXN],p[MAXN];
int step[4][2] = { { 0,1}, { 0,-1}, { 1,0}, { -1,0}};
int mark[MAXM][MAXM], map[MAXP][MAXP], board[MAXT][MAXT];
int num, cnt, ver, size;
bool cover[MAXM][MAXM];
char line[MAXM][MAXM];
//判断B集合中的连通性
inline int connect(int x, int y)
{
int front = 0, rear = 1;
w[rear].x = x; w[rear].y = y; board[x][y] = 0;
while(front < rear) {
front ++;
for(int i = 0; i < 4; i ++) {
int tx = w[front].x + step[i][0];
int ty = w[front].y + step[i][1];
if(tx >= 0 && tx < size && ty >= 0 && ty < size && board[tx][ty]) {
board[tx][ty] = 0;
rear++;
w[rear].x = tx;
w[rear].y = ty;
}
}
}
return rear;
}
//通过平移判断两个集合是否刚好构成N*N的图形
inline bool match(int minx2, int miny2, int maxx2, int maxy2, int maxx1, int maxy1)
{
for(int i = maxx2 - size + 1; i < minx2 + size - maxx1; i ++) {
for(int j = maxy2 - size + 1; j < miny2 + size - maxy1; j ++) {
bool flag = true;
for(int k = 0; k < num; k ++) {
if(map[v[k].x+i][v[k].y+j]) {
flag = false;
break;
}
}
if(flag) return true; //集合A和集合B刚好能组成size*size的正方形,返回true;
}
}
return false;
}
inline bool ok(int minx2,源码 int miny2, int maxx2, int maxy2) //参数传递集合A的边界
{
int i, j, minx1, miny1, maxx1, maxy1;
minx1 = miny1 = ; maxx1 = maxy1 = 0;
for(i = 0; i < ver; i ++) {
if(! cover[p[i].x][p[i].y]) { //标记集合B的边界
if(minx1 > p[i].x) minx1 = p[i].x;
if(miny1 > p[i].y) miny1 = p[i].y;
if(maxx1 < p[i].x) maxx1 = p[i].x;
if(maxy1 < p[i].y) maxy1 = p[i].y;
}
}
num = 0;
memset(map, 0, sizeof(map));
for(i = 0; i < ver; i ++) {
if(! cover[p[i].x][p[i].y]) {
if((p[i].x - minx1 >= size) || (p[i].y - miny1 >= size))
return false;
//集合B的边界超过size*size,返回false
v[num].x = p[i].x - minx1; //将集合B往左上角移
v[num].y = p[i].y - miny1;
num ++;
}else {
map[p[i].x - minx2 + 5][p[i].y - miny2 + 5]=1; //将集合A往右下角移
}
}
memset(board,源码crsv源码公式 0, sizeof(board));
for(i = 0; i < num; i ++)
board[v[i].x][v[i].y] = 1;
if(connect(v[0].x,v[0].y)<num) return false; //集合B不连通返回false
maxx2 = maxx2 - minx2 + 5; maxy2 = maxy2 - miny2 + 5;
minx2 = miny2 = 5;
maxx1 = maxx1 - minx1; maxy1 = maxy1 - miny1;
minx1 = miny1 = 0;
for(i = 0; i < 4; i ++) { //4次旋转
if(match(minx2, miny2, maxx2, maxy2, maxx1, maxy1))
//集合A与B刚好能够组成size*size的正方形,返回true
return true;
minx1 = miny1 = INT_MAX; maxx1 = maxy1 = INT_MIN;
for(j = 0; j < num; j ++) {
int temp = v[j].y;
v[j].y = size - v[j].x - 1;
v[j].x = temp;
if(minx1 > v[j].x) minx1 = v[j].x;
if(miny1 > v[j].y) miny1 = v[j].y;
if(maxx1 < v[j].x) maxx1 = v[j].x;
if(maxy1 < v[j].y) maxy1 = v[j].y;
}
for(j = 0; j < num; j ++) {
v[j].x -= minx1; v[j].y -= miny1; //将集合B往左上角移
}
maxx1 -= minx1;maxy1 -= miny1;
}
return false;
}
inline bool dfs(int minx,源码 int miny, int maxx, int maxy, int m, int k)
{
if(k > m) return false;
if(dfs(minx, miny, maxx, maxy, m, k + 1)) return true; //k点不属于集合A
if(abs(u[k].x - minx) >= size || abs(u[k].y - miny) >= size ||
abs(u[k].x - maxx) >= size || abs(u[k].y - maxy) >= size)
//若集合A超过边界size,则返回false
return false;
int i,源码 tx, ty;
for(i = 0; i < 4; i ++) {
tx = u[k].x + step[i][0];
ty = u[k].y + step[i][1];
if(line[tx][ty] == '*' && ! mark[tx][ty]) { //可扩展点进行标记
m ++;
u[m].x = tx;
u[m].y = ty;
mark[tx][ty] = k;
}
}
cover[u[k].x][u[k].y] = true;
if(ok(__min(minx, u[k].x), __min(miny, u[k].y), __max(maxx, u[k].x), __max(maxy, u[k].y)))
//若刚好能组成size*size的正方形,则返回true
return true;
if(dfs(__min(minx,源码 u[k].x), __min(miny, u[k].y), __max(maxx, u[k].x), __max(maxy,u[k].y), m, k + 1))//继续搜索集合A,若成功返回true
return true;
cover[u[k].x][u[k].y] = false;
for(i = 0; i < 4; i ++) {
tx = u[k].x + step[i][0];
ty = u[k].y + step[i][1];
if(mark[tx][ty] == k) mark[tx][ty] = 0; //消除标记
}
return false;
}
int main()
{
cnt = 0;
while(gets(line[cnt++])); //读入数据
ver = 0;
for(int i = 0; i < cnt; i ++)
for(int j = 0; line[i][j]; j ++)
if(line[i][j] == '*') {
p[ver].x = i; p[ver].y = j; ver ++;
}
size = (int)sqrt((double)ver); //正方形的源码边长为size
memset(cover, false, sizeof(cover));
memset(mark, 0, sizeof(mark));
u[1].x = p[0].x; u[1].y = p[0].y;
mark[u[1].x][u[1].y] = -1;
dfs(u[1].x, u[1].y, u[1].x, u[1].y, 1, 1); //搜索集合A的可能情况
for(i = 0; i < cnt; i ++) {
for(int j = 0; line[i][j]; j ++) {
if(line[i][j]=='*') {
if(cover[i][j]) printf("A");
else printf("B");
}else printf(".");
}
printf("\n");
}
return(0);
}
åµå ¥å¼ç³»ç»èªå¦
åµå ¥å¼ç³»ç»è½¯ä»¶å·¥ç¨ æ¹æ³å®ç¨ææ¯ååºç¨ï¼å è´¹ä¸è½½é¾æ¥:/s/No3IypKyLgbV4T9bw
æåç :stãåµå ¥å¼ç³»ç»è½¯ä»¶å·¥ç¨:åºç¡ç¥è¯ãæ¹æ³ååºç¨ãç³»ç»å°éè¿°åµå ¥å¼ç³»ç»è½¯ä»¶å·¥ç¨ææ¶åçè¿ç¨ãæ¹æ³ãå 容ï¼ä»¥åå¨å ¸åå·¥ä¸é¢åä¸çåºç¨ãå ¨ä¹¦å 容å为两大é¨åï¼ç¬¬ä¸é¨åä»ç»åµå ¥å¼ç³»ç»è½¯ä»¶å·¥ç¨æ¹æ³è®ºï¼ä¸»è¦å æ¬åµå ¥å¼è½¯ä»¶çå¼åè¿ç¨(éæ±å·¥ç¨ã软件åç³»ç»ä½ç³»ç»æãç¼ç¨åæµè¯çå 容)ï¼å¼ååæµè¯ä¸æéç¨çæ åï¼ä¸å®å ¨æ§ç¸å ³ç软件系ç»çåå ¥ï¼ä»¥ååµå ¥å¼è½¯ä»¶ææ¶åçæ³å¾é®é¢ï¼ç¬¬äºé¨åä»ç»åµå ¥å¼ç³»ç»è½¯ä»¶å¨æ±½è½¦é¢åã轨é交éé¢åãèªå¤©é¢åãå»çå¨æ¢°ãå·¥ä¸èªå¨åãéä¿¡ç³»ç»ä¸çåºç¨ï¼å¨æ¯ä¸ªåºç¨é¢åéç¹ä»ç»å ·ä½åºç¨é¢åçä¸äºç¹å®éæ±ãææ¯åéå¶æ¡ä»¶ï¼ä»¥åå®ä»¬å¯¹äºåµå ¥å¼ç³»ç»è½¯ä»¶å¼åè¿ç¨çå½±åã
企业级自动代码静态分析器Helix QAC--从应用层级保证代码质量和安全(二)
继续关注企业级代码质量与安全守护者--Helix QAC。这款强大的源码自动代码静态分析工具以其广泛支持的编码规范,如MISRA C/C++、源码AUTOSAR C++、源码CERT C/C++、源码CWE C/C++等,源码易语言登录程序源码赢得了全球多家汽车厂商和供应商的信任。 Helix QAC遵循“早期发现,频繁检查”的原则,确保在软件开发初期发现并修复数据流和控制流问题、不一致性、危险使用以及违反编码标准的情况,有效降低后期风险。洛克王国时空辅助源码 通过提供一个自动化且高效的环境,Helix QAC能实时检测并报告不符合编码规范的情况,生成定制化的报告,包括代码审查、度量、合规性和抑制报告,帮助开发团队优化代码质量,饿了么软件源码提升可维护性、可复用性和安全性,从而简化开发流程,节省成本。 编码规范方面,MISRA编码规范针对安全系统开发提供最佳实践,AUTOSAR Coding Guidelines则适用于现代C++语言的墨迹天气 安卓 源码嵌入式系统开发,确保符合ISO标准。CERT规范则关注网络安全和设计错误,CWE则帮助识别和预防常见的软件安全漏洞。 Helix QAC Dashboard作为团队质量管理平台,通过网页端集成,支持协作与共享,满足开发人员、项目管理者乃至高级管理人员的不同需求,实时监控代码质量变化和合规性。 对于开发者来说,关键在于理解代码库的合规状态,项目经理和QA则需要跨项目质量概览,供应商和客户则需要代码质量的详细配置信息。Helix QAC Dashboard整合所有这些视角,提供一致的质量分析。 Helix QAC的架构包括客户端-服务器设计,带有诊断注释的源代码查看,灵活的诊断抑制机制,以及与Jenkins、JIRA等工具的集成。其资质认证如SGS-TÜV SAAR,适用于安全相关软件开发,满足IEC 、ISO 等标准,加速产品认证过程。 想要体验Helix QAC的强大功能?直接联系北汇信息或发送邮件至info@polelink.com获取免费试用。更多动态和深入学习资源,请关注我们的更新:Helix QAC 年最新版本功能介绍
鸿蒙智能汽车静态代码分析
自动化静态测试实战指南
汽车信息安全:代码静态测试的重要性
C++与AUTOSAR编码规范结合,守护汽车安全