题目链接
(AC代码在最后面)
Description
In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For example,
.
2
7
3
8
.
.
1
.
.
1
.
.
.
6
7
3
5
.
.
.
.
.
.
.
2
9
3
.
5
6
9
2
.
8
.
.
.
.
.
.
.
.
.
.
.
6
.
1
7
4
5
.
3
6
4
.
.
.
.
.
.
.
9
5
1
8
.
.
.
7
.
.
8
.
.
6
5
3
4
.
Given some of the numbers in the grid, your goal is to determine the remaining numbers such that the numbers 1 through 9 appear exactly once in (1) each of nine 3 × 3 subgrids, (2) each of the nine rows, and (3) each of the nine columns.
Input
The input test file will contain multiple cases. Each test case consists of a single line containing 81 characters, which represent the 81 squares of the Sudoku grid, given one row at a time. Each character is either a digit (from 1 to 9) or a period (used to indicate an unfilled square). You may assume that each puzzle in the input will have exactly one solution. The end-of-file is denoted by a single line containing the word “end”.
Output
For each test case, print a line representing the completed Sudoku puzzle.
Sample Input
.2738..1..1...6735.......293.5692.8...........6.1745.364.......9518...7..8..6534.
......52..8.4......3...9...5.1...6..2..7........3.....6...1..........7.4.......3.
end
Sample Output
527389416819426735436751829375692184194538267268174593643217958951843672782965341
416837529982465371735129468571298643293746185864351297647913852359682714128574936
如果按照POJ2676 Sudoku、POJ2918 Tudoku(数独(一))做是行不通的,需要进一步优化
超时代码:
//CSDN博客:https://blog.csdn.net/qq_40889820
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define random(a,b) (rand()%(b-a+1)+a)
#define e 2.71828182
#define Pi 3.141592654
using namespace std;
char table[10][10];
int row[10][10],col[10][10],grid[10][10];
bool flag=false;
void dfs(int x,int y)//填第(x,y)格
{
if(flag) return;//已找到一种解法
if(y>9) y=1,x+=1;
if(x>9)
{
for(int i=1;i<=9;i++)
cout<>str)
{
if(str=="end") break;
int count=0;
mem(row,0);mem(col,0);mem(grid,0);
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
table[i][j]=str[count++];
if(table[i][j]=='.') table[i][j]='0';
row[i][table[i][j]-'0']=1;
col[j][table[i][j]-'0']=1;
int ord=(i-1)/3*3+(j-1)/3+1;
grid[ord][table[i][j]-'0']=1;
}
dfs(1,1);
cout<
样例用时:
位运算优化,利用三个一维数组row[10],col[10],grid[10]的二进制来记录数字的占用情况。 可填的数字为1~9,故令init=111111111(2)=511=(1<<9)-1,表示一开始1~9都可以填(都未被占用),row[i]表示第i行数字的占用情况,col数组和grid数组同理。当需要获取一个x行y列z方块的空白格子能填的数字只需要先将row[x]&col[y]&grid[z](位与),再利用lowbit函数和预先处理好的figure数组依次取出能填的数字,如100100010即代表数字2、6、9可填。利用异或运算更新状态。
//CSDN博客:https://blog.csdn.net/qq_40889820
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define random(a,b) (rand()%(b-a+1)+a)
#define e 2.71828182
#define Pi 3.141592654
using namespace std;
char table[10][10];
int row[10],col[10],grid[10];//二进制记录行、列、方块的数字占用情况
int figure[(1<<8)+1];//
bool flag=false;
int lowbit(int x)
{
return x&(-x);
}
void dfs(int x,int y)//填第(x,y)格
{
if(flag) return;//已找到一种解法
if(y>9) y=1,x+=1;
if(x>9)
{
for(int i=1;i<=9;i++)
cout<0;i-=lowbit(i))
{
int num=figure[lowbit(i)];//可填的数字
table[x][y]=num+'0';
row[x] ^= lowbit(i);
col[y] ^= lowbit(i);
grid[ord] ^= lowbit(i);
dfs(x,y+1);
//回溯
table[x][y]='0';
row[x] ^= lowbit(i);
col[y] ^= lowbit(i);
grid[ord] ^= lowbit(i);
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
string str;
for(int i=0;i<9;i++)
figure[1<>str)
{
if(str=="end") break;
int count=0;
for(int i=1;i<=9;i++)
row[i]=col[i]=grid[i]=init;
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
table[i][j]=str[count++];
if(table[i][j]=='.')
{
table[i][j]='0';
continue;
}
row[i] ^= (1<<(table[i][j]-'0'-1));
col[j] ^= (1<<(table[i][j]-'0'-1));
int ord=(i-1)/3*3+(j-1)/3+1;
grid[ord] ^= (1<<(table[i][j]-'0'-1));
}
/*clock_t t;
t=clock();*/
dfs(1,1);
/*t=clock()-t;
cout<<"时间为:"<<(((float)t)/CLOCKS_PER_SEC*1000)<<"ms\n";*/
cout<
样例用时:(由样例来看优化并不是特别明显?但是实际上位运算优化能提升较大的性能)
优化一下搜索顺序,优先处理可选数字较少的格子 ,一开始是静态的保存好,并未考虑到一个格子填好胡会对后续格子造成影响。
//CSDN博客:https://blog.csdn.net/qq_40889820
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define random(a,b) (rand()%(b-a+1)+a)
#define e 2.71828182
#define Pi 3.141592654
using namespace std;
struct node
{
int x,y,z;//第x行,第y列,第z个方块
vector able;//可填数字
friend bool operator < (node a,node b)
{
if(a.able.size()!=b.able.size()) return a.able.size()sum)
{
for(int i=1;i<=9;i++)
cout<>str)
{
if(str=="end") break;
int count=0;
mem(row,0);mem(col,0);mem(grid,0);
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
table[i][j]=str[count++];
if(table[i][j]=='.') table[i][j]='0';
row[i][table[i][j]-'0']=1;
col[j][table[i][j]-'0']=1;
int ord=(i-1)/3*3+(j-1)/3+1;
grid[ord][table[i][j]-'0']=1;
}
count=0;
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
if(table[i][j]!='0') continue;
count++;
p[count].able.clear();//血与泪的教训!!这个坑太深了
p[count].x=i,p[count].y=j;
int ord=(i-1)/3*3+(j-1)/3+1;
p[count].z=ord;
for(int k=1;k<=9;k++)
if(!row[i][k]&&!col[j][k]&&!grid[ord][k])
p[count].able.push_back(k);
}
sort(p+1,p+count+1);
/*clock_t t;
t=clock();*/
dfs(1,count);
/*t=clock()-t;
cout<<"时间为:"<<(((float)t)/CLOCKS_PER_SEC*1000)<<"ms\n";*/
cout<
当对node里<号的重载为
if(a.able.size()!=b.able.size()) return a.able.size()
时,即按可选数字数递增,若相同则按原顺序 进行搜索,所需时间为:
当对node里<号的重载为
if(a.x!=b.x) return a.x
时,即按原顺序(数独中从上到下,从左到右)进行搜索,所需时间为:
很显然,这样做并不能满足要求。
后来改为动态查询,每次都查找可选数字最少的格子 。但还是不幸超时
//CSDN博客:https://blog.csdn.net/qq_40889820
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define random(a,b) (rand()%(b-a+1)+a)
#define e 2.71828182
#define Pi 3.141592654
#define P pair
using namespace std;
char table[10][10];
int row[10],col[10],grid[10];//二进制记录行、列、方块的数字占用情况
int figure[(1<<8)+1];//
int lowbit(int x)
{
return x&(-x);
}
int z[10][10]={{0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,2,2,2,3,3,3},
{0,1,1,1,2,2,2,3,3,3},
{0,1,1,1,2,2,2,3,3,3},
{0,4,4,4,5,5,5,6,6,6},
{0,4,4,4,5,5,5,6,6,6},
{0,4,4,4,5,5,5,6,6,6},
{0,7,7,7,8,8,8,9,9,9},
{0,7,7,7,8,8,8,9,9,9},
{0,7,7,7,8,8,8,9,9,9}};
int num(int n)//返回可填数字个数
{
int ans=0;
for(int i=n;i;i-=lowbit(i))
ans++;
return ans;
}
P Min()//获得可填数字数最少的格子
{
int x=0,y=0,Min=1<<30;
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
{
if(table[i][j]!='0') continue;
int status=row[i]&col[j]&grid[z[i][j]];
if(!status) return P(-1,-1);//该格子无可填的数字
if(num(status)0;i-=lowbit(i))
{
int num=figure[lowbit(i)];//可填的数字
table[x][y]=num+'0';
row[x] ^= lowbit(i);
col[y] ^= lowbit(i);
grid[z[x][y]] ^= lowbit(i);
P p=Min();
if(p.first==-1)
{
table[x][y]='0';
row[x] ^= lowbit(i);
col[y] ^= lowbit(i);
grid[z[x][y]] ^= lowbit(i);
continue;
}
if(p.first==0) return true;
if(dfs(p.first,p.second)) return true;
table[x][y]='0';
row[x] ^= lowbit(i);
col[y] ^= lowbit(i);
grid[z[x][y]] ^= lowbit(i);
}
return false;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
string str;
for(int i=0;i<9;i++)
figure[1<>str)
{
if(str=="end") break;
int count=0;
for(int i=1;i<=9;i++)
row[i]=col[i]=grid[i]=init;
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
table[i][j]=str[count++];
if(table[i][j]=='.')
{
table[i][j]='0';
continue;
}
row[i] ^= (1<<(table[i][j]-'0'-1));
col[j] ^= (1<<(table[i][j]-'0'-1));
grid[z[i][j]] ^= (1<<(table[i][j]-'0'-1));
}
/*clock_t t;
t=clock();*/
P p=Min();
dfs(p.first,p.second);
//t=clock()-t;
for(int i=1;i<=9;i++)
cout<
然后将各个10进制数字代表能填数字的个数保存在数组里,终于是过了
显然还有更进一步的优化,留在POJ3076去探索吧。
AC代码:
//CSDN博客:https://blog.csdn.net/qq_40889820
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define random(a,b) (rand()%(b-a+1)+a)
#define e 2.71828182
#define Pi 3.141592654
#define P pair
using namespace std;
char table[10][10];
int row[10],col[10],grid[10];//二进制记录行、列、方块的数字占用情况
int num[(1<<9)];//
int lowbit(int x)
{
return x&(-x);
}
int z[10][10]={{0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,2,2,2,3,3,3},
{0,1,1,1,2,2,2,3,3,3},
{0,1,1,1,2,2,2,3,3,3},
{0,4,4,4,5,5,5,6,6,6},
{0,4,4,4,5,5,5,6,6,6},
{0,4,4,4,5,5,5,6,6,6},
{0,7,7,7,8,8,8,9,9,9},
{0,7,7,7,8,8,8,9,9,9},
{0,7,7,7,8,8,8,9,9,9}};
int fun(int n)//返回可填数字个数
{
int ans=0;
for(int i=n;i;i-=lowbit(i))
ans++;
return ans;
}
P Min()//获得可填数字数最少的格子
{
int x=0,y=0,Min=1<<30;
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
{
if(table[i][j]!='0') continue;
int status=row[i]&col[j]&grid[z[i][j]];
if(!status) return P(-1,-1);//该格子无可填的数字
if(num[status]>(i-1) & 1)//数字i未被占用
{
table[x][y]=i+'0';
row[x] ^= (1<< i-1);
col[y] ^= (1<< i-1);
grid[z[x][y]] ^= (1<< i-1);
P p=Min();
if(p.first==-1)
{
table[x][y]='0';
row[x] ^= (1<< i-1);
col[y] ^= (1<< i-1);
grid[z[x][y]] ^= (1<< i-1);
continue;
}
if(p.first==0) return true;
if(dfs(p.first,p.second)) return true;
table[x][y]='0';
row[x] ^= (1<< i-1);
col[y] ^= (1<< i-1);
grid[z[x][y]] ^= (1<< i-1);
}
}
return false;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
string str;
for(int i=0;i<(1<<9);i++)
num[i]=fun(i);
int init=(1<<9)-1;//二进制为111111111
while(cin>>str)
{
if(str=="end") break;
int count=0;
for(int i=1;i<=9;i++)
row[i]=col[i]=grid[i]=init;
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
{
table[i][j]=str[count++];
if(table[i][j]=='.')
{
table[i][j]='0';
continue;
}
row[i] ^= (1<<(table[i][j]-'0'-1));
col[j] ^= (1<<(table[i][j]-'0'-1));
grid[z[i][j]] ^= (1<<(table[i][j]-'0'-1));
}
/*clock_t t;
t=clock();*/
P p=Min();
dfs(p.first,p.second);
//t=clock()-t;
for(int i=1;i<=9;i++)
cout<
样例用时:(显然样例只能当样例看)
参考资料: 搜索_常规DFS_POJ3074_Sudoku Sicily1317-Sudoku-位运算暴搜 二进制-高效位运算
你可能感兴趣的:(#,>>>>深度优先搜索,∨∨Acm)
最超值的Mac——Mac mini
初心么么哒
你知道最超值的Mac是什么吗?自2005年以来,Macmini一直是Apple台式机产品线中的主要产品。最初推出是为了让对Mac好奇的Mac进入Apple生态系统的一种简单方式,现在新的AppleSiliconMacmini可能是任何寻找新Mac的人的最有吸引力的购买。什么是AppleSiliconMacmini?M1Macmini是Apple最小的台式电脑,同时也是最快的台式电脑之一。最新型号由
java迷宫问题 华为_深度优先搜索——迷宫问题(华为oj)
刘洛希
java迷宫问题 华为
题目描述:定义一个二维数组N*M(其中2=n)38continue;39if(a[tx][ty]==0&&book[tx][ty]==0)40{41xy.x=tx;42xy.y=ty;43way.push_back(xy);44book[tx][ty]=1;45dfs(tx,ty,step+1);46book[tx][ty]=0;47way.pop_back();48}49}50return0;5
暑假训练总结
G_Meteor
不知不觉暑假就要这样结束了,这个假期主要在弄ACM了,但是由于家里原因并没有来学校参加集训,而是在家里跟着学知识点刷题做练习赛。编程作为计算机的基础以及入门知识,其重要性自然不用说,而且大一刚开始就是学算法,当时感觉编程挺感兴趣的,然后参加那个新生编程赛。刚开始接触到ACM也是在这次新生编程比赛上吧,当时听到学长对ACM的介绍后,感觉挺感兴趣的,再加上当时感觉编程也是挺有意思的,然后大一寒假就加入
综述论文“A Survey of Zero-Shot Learning: Settings, Methods, and Applications”
硅谷秋水
机器学习 机器学习 神经网络 深度学习
该零样本学习综述,发表于ACMTrans.Intell.Syst.Technol.10,2,Article13(January2019)摘要:大多数机器学习方法着重于对已经在训练中看到其类别的实例进行分类。实际上,许多应用程序需要对实例进行分类,而这些实例的类以前没有见过。零样本学习(Zero-ShotLearning)是一种强大而有前途的学习范例,其中训练实例涵盖的类别与想分类的类别是不相交的。
【Hot100】LeetCode—64. 最小路径和
山脚ice
# Hot100 leetcode 算法
目录1-思路题目识别动规五部曲2-实现⭐64.最小路径和——题解思路3-ACM实现原题链接:64.最小路径和1-思路题目识别识别1:给一个二维数组grid,每次只能向下或者向右移动一步识别2:求移动到右下角的最小路径和动规五部曲求的是路径的和,与不同路径的区别在于是否加上当前grid[i][j]的值2-实现⭐64.最小路径和——题解思路classSolution{publicintminPathS
【Hot100】LeetCode—763. 划分字母区间
山脚ice
# Hot100 leetcode 哈希算法
目录1-思路哈希表+双指针2-实现⭐763.划分字母区间——题解思路3-ACM实现原题链接:763.划分字母区间1-思路哈希表+双指针①找到元素最远的出现位置:哈希表②根据最远出现位置,判断区间的分界线:双指针实现1-定义一个哈希数组,判断最远出现的位置:int[]hash=newint[27]遍历字符串,记录最远出现位置2-分割点利用数组,收集结果intleft=0;intright=0;记录左
【每日一题】LeetCode 104.二叉树的最大深度(树、深度优先搜索、广度优先搜索、二叉树)
Chase-Hart
算法 leetcode 深度优先 宽度优先 数据结构 java
【每日一题】LeetCode104.二叉树的最大深度(树、深度优先搜索、广度优先搜索、二叉树)题目描述给定一个二叉树root,我们需要计算并返回该二叉树的最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。思路分析为了解决这个问题,我们可以使用递归的方法。递归的基本思想是从根节点开始,逐层向下遍历树的每个节点,同时记录当前的深度。在递归的过程中,我们会遇到两种情况:当前节点为
深度优先算法,广度优先算法,hill climbing,贪心搜索,A*算法,启发式搜索算法是什么,比起一般搜索法算法有什么区别
MIMO. mimo
算法 深度优先 宽度优先
深度优先算法(Depth-FirstSearch,DFS)深度优先搜索是一种用于遍历或搜索树或图的算法。它沿着树的深度遍历树的节点,尽可能深地搜索树的分支。当节点v的所在边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,直到所有节点都被访问为止。深度优先搜索是一个递归算法,
redis cluster之Gossip协议
tracy_668
什么是Gossip协议Gossipprotocol也叫EpidemicProtocol(流行病协议),实际上它还有很多别名,比如:“流言算法”、“疫情传播算法”等。这个协议的作用就像其名字表示的意思一样,非常容易理解,它的方式其实在我们日常生活中也很常见,比如电脑病毒的传播,森林大火,细胞扩散等等。Gossipprotocol最早是在1987年发表在ACM上的论文《EpidemicAlgorith
卡码网C++基础课 | 1. A+B问题I
TimeManager1
c++ 开发语言
之前一直有在学习c++,陆陆续续也跟着代码随想录刷了一些力扣,但是总感觉在自己的基本功不够扎实,尤其是在遇见ACM输入输出模式的时候,所以就想着跟着卡尔的基础课教程系统性地学习一遍,就在这里记录一下自己的小心得吧,也算是一种小小的打卡,希望自己能够坚持下去!加油!1.在该问题中,输入输出是靠内置库iostream实现的,里面有两个基础类型:istream和ostream,也就是输入输出流,在声明了
【笔试题汇总】华为春招笔试题题解 2024-3-20
PXM的算法星球
大厂面试题 华为 面试 数据结构 算法
这里是paoxiaomo,一个现役ACMer,之后将会持续更新算法笔记系列以及笔试题题解系列本文章面向想打ICPC/蓝桥杯/天梯赛等程序设计竞赛,以及各个大厂笔试的选手感谢大家的订阅➕和喜欢有什么想看的算法专题可以私信博主(本文题面由清隆学长收集)01.K小姐的魔法药水问题描述K小姐是一位魔法师,她最近在研究一种神奇的魔法药水。这种药水由一系列魔法材料制成,每种材料都有一个正整数的魔法值。K小姐按
【华为笔试题汇总】2024-05-22-华为春招笔试题-三语言题解(Python/Java/Cpp)
春秋招笔试突围
华为春秋招笔试题汇总 最新互联网春秋招试题合集 华为 python java 算法
大家好这里是清隆学长,一枚热爱算法的程序员✨本系列打算持续跟新小米近期的春秋招笔试题汇总~ACM银牌|多次AK大厂笔试|编程一对一辅导感谢大家的订阅➕和喜欢清隆这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下清隆领取,会在飞书进行同步的跟新。文章目录01.获取公共链表片段问题描述输入格式输出格式样例输入样例输出数据范围题解参考代码02.矿车运输成本问题描述输入格式
四、使用MoveGroup C++接口——运动学(二)
阿白机器人
MoveIt 2机器人运动规划 c++
目录前言1.运动学插件(KinematicsPlugin)2.碰撞检测(CollisionChecking)3.碰撞对象(CollisionObjects)4.允许碰撞矩阵(AllowedCollisionMatrix,ACM)前言运动学是研究物体运动的几何属性而不涉及力或质量的科学。在机器人学中,运动学涉及到机器人的机械臂和关节如何运动。1.运动学插件(KinematicsPlugin)Move
java mp3转m4a_轻松在你的Android App中转换音频文件,支持格式:WAV, AAC, MP3, M4A, WMA 和FLAC....
Kada Liao
java mp3转m4a
AndroidAudioConverterConvertaudiofilesinsideyourAndroidappeasily.ThisisawrapperofFFmpeg-Android-Javalib.Supportedformats:AACMP3M4AWMAWAVFLACLibsize:~9mbHowToUse1-AddthispermissionintoyourAndroidManife
【LeetCode每日一题】【2021/12/7】1034. 边界着色
亡心灵
LeetCode刷题 leetcode 深度优先 算法 c++ 图论
文章目录1034.边界着色前言方法1:广度优先搜索方法2:深度优先搜索(非递归)1034.边界着色LeetCode:1034.边界着色中等\color{#FFB800}{中等}中等给你一个大小为mxn的整数矩阵grid,表示一个网格。另给你三个整数row、col和color。网格中的每个值表示该位置处的网格块的颜色。当两个网格块的颜色相同,而且在四个方向中任意一个方向上相邻时,它们属于同一连通分量
搜索与图论
yy代码
图论 深度优先 算法
第三章搜索与图论1.深度优先搜索DFS一条路走到黑数字全排列[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g3u66CKm-1657019682316)(C:\Users\ZBY\Desktop\Snipaste_2022-06-22_18-43-39.png)]#includeusingnamespacestd;#include#includeintn;const
【代码随想录训练营第42期 Day53打卡 - 图论Part4 - 卡码网 110. 字符串接龙 105. 有向图的完全可达性
逝去的秋风
代码随想录打卡 图论 深度优先 算法 广度优先
目录一、个人感受二、题目与题解题目一:卡码网110.字符串接龙题目链接题解:BFS+哈希题目二:卡码网105.有向图的完全可达性题目链接题解:DFS三、小结一、个人感受对于两大基本搜索:深度优先搜索DFS遍历所有路径,每条路径都是一条路走到底,用于解决需要处理所有位置的情况;广度优先搜索BFS遍历最近相邻路径(常用邻接图,邻接表实现),用于用于求得最短路径,最小次数等。今天打卡题目个人感觉挺难,事
【Hot100】LeetCode—118. 杨辉三角
山脚ice
# Hot100 leetcode 算法
目录1-思路模拟2-实现⭐118.杨辉三角——题解思路3-ACM实现原题链接:118.杨辉三角1-思路模拟1-定义grid2-实现递推公式3-初始化4-遍历递推收集结果2-实现⭐118.杨辉三角——题解思路classSolution{publicList>generate(intnumRows){int[][]grid=newint[numRows][numRows];//初始化for(inti=
【Hot100】LeetCode—215. 数组中的第K个最大元素
山脚ice
# Hot100 leetcode 算法
目录1-思路快速选择2-实现⭐215.数组中的第K个最大元素——题解思路3-ACM实现原题连接:215.数组中的第K个最大元素1-思路快速选择第k大的元素的数组下标:inttarget=nums.length-k1-根据partition分割的区间来判断当前处理方式如果返回的int等于target说明找到了,直接返回如果返回的int小于target说明要在当前区间的右侧寻找,也就是[pivotIn
图像去噪技术:自适应均值滤波器(ACmF)
潦草通信狗
均值算法 算法 人工智能 图像处理 信息与通信 matlab
在图像处理领域,噪声是影响图像质量和视觉感知的主要因素之一。椒盐噪声是一种常见的噪声类型,它随机地将像素值改变为最小值或最大值,严重影响图像的视觉效果。为了解决这一问题,我们开发了一种自适应均值滤波器(ACmF),它能够有效地去除椒盐噪声,同时保留图像的重要细节。一、ACmF算法简介ACmF算法是一种基于局部像素值的自适应去噪方法。它通过分析图像的局部区域,对噪声像素进行智能处理,以恢复图像的原始
代码随想录+力扣刷题记录+华为机考准备记录
梁慢慢慢慢
leetcode 算法 数据结构
为了准备华为机考的刷题记录,已压线过背景:数据结构与算法零基础,此前没有刷过题,会Python。学习路线按照代码随想录的顺序刷题,刷题平台:力扣以上大致过了一遍后开始刷华为机考真题(cdsn上购买的真题,刷题平台是购买的真题中的OJ平台,也是ACM模式)总共用时1个月。完成情况:力扣80个题+华为2024年机考真题。大部分题目都只做过1次,掌握得很不牢固,机考的时候也是压线过。时间比较紧急,做到后
实验楼 python实现markdown解析器_C++ 打造 Markdown 解析器
weixin_39517400
实验楼
项目简介:Markdown已经是程序员的标配,其语法简单的特点让我们能够更加专注于内容输出与写作。本次项目我们将针对Markdown的一些最常用语法,手动实现一个Markdown解析器,作为展示,还将为文档生成目录本项目由欧龙崎发布在实验楼,完整教程及在线练习地址:C++打造Markdown解析器一、概述效果展示如图所示:项目涉及的知识点词法分析技术语法树DFS深度优先搜索C++11使用指针进行字
释放oracle undo表空间,undo表空间释放
IBEANI
释放oracle undo表空间
一.概述:使用IMPDP工具导入大表(166G)数据时,报undo表空间不能扩展,导入工作失败.手工停止了impdp后,undo表空间存在无法自动释放的故障.本文主要描述如何通过重建undo表空间来手工释放undo表空间.数据库环境的描述:OS:AIX6.1+HACMP5.3DB:ORACLE10.2.0.5RAC二.问题的描述impdp导入数据时,报ora-30036错误$impdpuser/p
图的邻接表建立方法和深搜广搜
翔山代码
算法 深度优先 算法
深度优先搜索(DFS)和广度优先搜索(BFS)是图论中两种经典的图遍历算法,它们在解决各种问题如路径查找、迷宫求解、连通性分析等方面有着广泛的应用。深度优先搜索(DFS)是一种沿着图的边深入直到最后一个顶点,然后回溯并尝试另一条路径的算法。它使用递归或栈来实现,可以看作是树的先序遍历的推广。DFS的特点在于它尽可能深地搜索图的分支,当一条路走到尽头时,它会回溯到上一个顶点,然后继续搜索另一条路径。
【最新华为OD机试E卷】日志采集系统(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
春秋招笔试突围
华为od python c语言
大家好这里是春秋招笔试突围,一枚热爱算法的程序员✨本系列打算持续跟新华为OD-E/D卷的三语言AC题解ACM金牌️团队|多次AK大厂笔试|编程一对一辅导感谢大家的订阅➕和喜欢最新华为OD机试D卷目录,全、新、准,题目覆盖率达95%以上,支持题目在线评测,专栏文章质量平均94分最新华为OD机试目录:https://blog.csdn.net/Qmtdearu/article/details/1393
mac版QQ聊天信息备份与导出方法
iHTCboy
前言最近,我司终于更换新电脑的计划落实啦!!!Macmini3.0GHz双核IntelCorei7处理器(TurboBoost高达3.5GHz)16GB1600MHzLPDDR3SDRAM1TB融合硬盘IntelIrisGraphics图形处理器非常值的可贺!然而,就是新电脑,一切都是新!一切都是白!!非常多工具的数据需要迁移,开发环境需要配置,最近也打算总结一下新电脑配置方面的文章,作为自己备份
代码随想录训练营 Day50打卡 图论part01 理论基础 98. 所有可达路径
那一抹阳光多灿烂
力扣 图论 图论 深度优先 算法
代码随想录训练营Day50打卡图论part01一、理论基础DFS(深度优先搜索)和BFS(广度优先搜索)在图搜索中的核心区别主要体现在搜索策略上:1、搜索方向:DFS:深度优先,一条路走到黑。DFS从起点开始,选择一个方向深入到底,遇到死胡同再回溯,换一个方向继续探索。这种方式适合解决路径和组合问题,常与递归和回溯算法结合使用。BFS:广度优先,层层推进。BFS以起点为中心,一层层扩展,首先访问所
数据结构之查找
点一下我的id
http://www.bjfuacm.com/problem/287/#includeusingnamespacestd;#defineOK1#defineMAXSIZE10000typedefintStatus;typedefintElementType;typedefintKeyType;typedefstruct{ElementType*data;intlength;}SqList;Stat
【Hot100】LeetCode—153. 寻找旋转排序数组中的最小值
山脚ice
# Hot100 leetcode java 算法
目录1-思路二分2-实现⭐33.搜索旋转排序数组——题解思路3-ACM实现原题链接:153.寻找旋转排序数组中的最小值1-思路二分左区间二分找分界点,二分找到旋转后的分界点即可以nums[mid]为基准,对比nums[0]即可找到区间分界点2-实现⭐33.搜索旋转排序数组——题解思路classSolution{publicintfindMin(int[]nums){intleft=0;intrig
C#语言基础速成Day07
blaizeer
C# c# windows 开发语言 算法
“知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。”目录前言文章有误敬请斧正不胜感恩!||Day07C#常见数据结构:1.集合(Collection)1.1**List**1.2**HashSet**1.3**LinkedList**1.4**ObservableCollection**2.栈(Stack)2.1深度优先搜索(DFS)2.2广度优先搜索(BFS)代码解释适用场景3.堆
jdk tomcat 环境变量配置
Array_06
java jdk tomcat
Win7 下如何配置java环境变量
1。准备jdk包,win7系统,tomcat安装包(均上网下载即可)
2。进行对jdk的安装,尽量为默认路径(但要记住啊!!以防以后配置用。。。)
3。分别配置高级环境变量。
电脑-->右击属性-->高级环境变量-->环境变量。
分别配置 :
path
&nbs
Spring调SDK包报java.lang.NoSuchFieldError错误
bijian1013
java spring
在工作中调另一个系统的SDK包,出现如下java.lang.NoSuchFieldError错误。
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.l
LeetCode[位运算] - #136 数组中的单一数
Cwind
java 题解 位运算 LeetCode Algorithm
原题链接:#136 Single Number
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现两次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
题目限定了线性的时间复杂度,同时不使用额外的空间,即要求只遍历数组一遍得出结果。由于异或运算 n XOR n = 0, n XOR 0 = n,故将数组中的每个元素进
qq登陆界面开发
15700786134
qq
今天我们来开发一个qq登陆界面,首先写一个界面程序,一个界面首先是一个Frame对象,即是一个窗体。然后在这个窗体上放置其他组件。代码如下:
public class First { public void initul(){ jf=ne
Linux的程序包管理器RPM
被触发
linux
在早期我们使用源代码的方式来安装软件时,都需要先把源程序代码编译成可执行的二进制安装程序,然后进行安装。这就意味着每次安装软件都需要经过预处理-->编译-->汇编-->链接-->生成安装文件--> 安装,这个复杂而艰辛的过程。为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,我们只需要根据自己的
socket通信遇到EOFException
肆无忌惮_
EOFException
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:
基于spring的web项目定时操作
知了ing
java Web
废话不多说,直接上代码,很简单 配置一下项目启动就行
1,web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="h
树形结构的数据库表Schema设计
矮蛋蛋
schema
原文地址:
http://blog.csdn.net/MONKEY_D_MENG/article/details/6647488
程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门、栏目结构、商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化。然而目前的各种基于关系的数据库,都是以二维表的形式记录存储数据信息,
maven将jar包和源码一起打包到本地仓库
alleni123
maven
http://stackoverflow.com/questions/4031987/how-to-upload-sources-to-local-maven-repository
<project>
...
<build>
<plugins>
<plugin>
<groupI
java IO操作 与 File 获取文件或文件夹的大小,可读,等属性!!!
百合不是茶
类 File
File是指文件和目录路径名的抽象表示形式。
1,何为文件:
标准文件(txt doc mp3...)
目录文件(文件夹)
虚拟内存文件
2,File类中有可以创建文件的 createNewFile()方法,在创建新文件的时候需要try{} catch(){}因为可能会抛出异常;也有可以判断文件是否是一个标准文件的方法isFile();这些防抖都
Spring注入有继承关系的类(2)
bijian1013
java spring
被注入类的父类有相应的属性,Spring可以直接注入相应的属性,如下所例:1.AClass类
package com.bijian.spring.test4;
public class AClass {
private String a;
private String b;
public String getA() {
retu
30岁转型期你能否成为成功人士
bijian1013
成长 励志
很多人由于年轻时走了弯路,到了30岁一事无成,这样的例子大有人在。但同样也有一些人,整个职业生涯都发展得很优秀,到了30岁已经成为职场的精英阶层。由于做猎头的原因,我们接触很多30岁左右的经理人,发现他们在职业发展道路上往往有很多致命的问题。在30岁之前,他们的职业生涯表现很优秀,但从30岁到40岁这一段,很多人
【Velocity四】Velocity与Java互操作
bit1129
velocity
Velocity出现的目的用于简化基于MVC的web应用开发,用于替代JSP标签技术,那么Velocity如何访问Java代码.本篇继续以Velocity三http://bit1129.iteye.com/blog/2106142中的例子为基础,
POJO
package com.tom.servlets;
public
【Hive十一】Hive数据倾斜优化
bit1129
hive
什么是Hive数据倾斜问题
操作:join,group by,count distinct
现象:任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成;查看未完成的子任务,可以看到本地读写数据量积累非常大,通常超过10GB可以认定为发生数据倾斜。
原因:key分布不均匀
倾斜度衡量:平均记录数超过50w且
在nginx中集成lua脚本:添加自定义Http头,封IP等
ronin47
nginx lua csrf
Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。刚开始我们只是用Lua 把请求路由到后端服务器,但是它对我们架构的作用超出了我们的预期。下面就讲讲我们所做的工作。 强制搜索引擎只索引mixlr.com
Google把子域名当作完全独立的网站,我们不希望爬虫抓取子域名的页面,降低我们的Page rank。
location /{
java-3.求子数组的最大和
bylijinnan
java
package beautyOfCoding;
public class MaxSubArraySum {
/**
* 3.求子数组的最大和
题目描述:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4,
Netty源码学习-FileRegion
bylijinnan
java netty
今天看org.jboss.netty.example.http.file.HttpStaticFileServerHandler.java
可以直接往channel里面写入一个FileRegion对象,而不需要相应的encoder:
//pipeline(没有诸如“FileRegionEncoder”的handler):
public ChannelPipeline ge
使用ZeroClipboard解决跨浏览器复制到剪贴板的问题
cngolon
跨浏览器 复制到粘贴板 Zero Clipboard
Zero Clipboard的实现原理
Zero Clipboard 利用透明的Flash让其漂浮在复制按钮之上,这样其实点击的不是按钮而是 Flash ,这样将需要的内容传入Flash,再通过Flash的复制功能把传入的内容复制到剪贴板。
Zero Clipboard的安装方法
首先需要下载 Zero Clipboard的压缩包,解压后把文件夹中两个文件:ZeroClipboard.js
单例模式
cuishikuan
单例模式
第一种(懒汉,线程不安全):
public class Singleton { 2 private static Singleton instance; 3 pri
spring+websocket的使用
dalan_123
一、spring配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.or
细节问题:ZEROFILL的用法范围。
dcj3sjt126com
mysql
1、zerofill把月份中的一位数字比如1,2,3等加前导0
mysql> CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL, -> day
Android开发10——Activity的跳转与传值
dcj3sjt126com
Android开发
Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据。
一、Activity跳转
方法一Intent intent = new Intent(A.this, B.class); startActivity(intent)
方法二Intent intent = new Intent();intent.setCla
jdbc 得到表结构、主键
eksliang
jdbc 得到表结构、主键
转自博客:http://blog.csdn.net/ocean1010/article/details/7266042
假设有个con DatabaseMetaData dbmd = con.getMetaData(); rs = dbmd.getColumns(con.getCatalog(), schema, tableName, null); rs.getSt
Android 应用程序开关GPS
gqdy365
android
要在应用程序中操作GPS开关需要权限:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
但在配置文件中添加此权限之后会报错,无法再eclipse里面正常编译,怎么办?
1、方法一:将项目放到Android源码中编译;
2、方法二:网上有人说cl
Windows上调试MapReduce
zhiquanliu
mapreduce
1.下载hadoop2x-eclipse-plugin https://github.com/winghc/hadoop2x-eclipse-plugin.git 把 hadoop2.6.0-eclipse-plugin.jar 放到eclipse plugin 目录中。 2.下载 hadoop2.6_x64_.zip http://dl.iteye.com/topics/download/d2b
如何看待一些知名博客推广软文的行为?
justjavac
博客
本文来自我在知乎上的一个回答:http://www.zhihu.com/question/23431810/answer/24588621
互联网上的两种典型心态:
当初求种像条狗,如今撸完嫌人丑
当初搜贴像条犬,如今读完嫌人软
你为啥感觉不舒服呢?
难道非得要作者把自己的劳动成果免费给你用,你才舒服?
就如同 Google 关闭了 Gooled Reader,那是
sql优化总结
macroli
sql
为了是自己对sql优化有更好的原则性,在这里做一下总结,个人原则如有不对请多多指教。谢谢!
要知道一个简单的sql语句执行效率,就要有查看方式,一遍更好的进行优化。
一、简单的统计语句执行时间
declare @d datetime ---定义一个datetime的变量set @d=getdate() ---获取查询语句开始前的时间select user_id
Linux Oracle中常遇到的一些问题及命令总结
超声波
oracle linux
1.linux更改主机名
(1)#hostname oracledb 临时修改主机名
(2) vi /etc/sysconfig/network 修改hostname
(3) vi /etc/hosts 修改IP对应的主机名
2.linux重启oracle实例及监听的各种方法
(注意操作的顺序应该是先监听,后数据库实例)
&nbs
hive函数大全及使用示例
superlxw1234
hadoop hive函数
具体说明及示例参 见附件文档。
文档目录:
目录
一、关系运算: 4
1. 等值比较: = 4
2. 不等值比较: <> 4
3. 小于比较: < 4
4. 小于等于比较: <= 4
5. 大于比较: > 5
6. 大于等于比较: >= 5
7. 空值判断: IS NULL 5
Spring 4.2新特性-使用@Order调整配置类加载顺序
wiselyman
spring 4
4.1 @Order
Spring 4.2 利用@Order控制配置类的加载顺序
4.2 演示
两个演示bean
package com.wisely.spring4_2.order;
public class Demo1Service {
}
package com.wisely.spring4_2.order;
public class