当前位置: 首页 > news >正文

东莞企业网站建设seo教学网seo

东莞企业网站建设,seo教学网seo,wordpress企业网站实例,东莞企业公司网站建设目录 牛客.求和​编辑 牛客.abb 牛客.合并k个有序链表 牛客.滑雪(暴力->递归->记忆化搜索) 牛客.旋转字符串 牛客.求和 我没想到是dfs,另外我的dfs能力确实也不强,另外难度大的是他的那个输出 import java.util.Scanne…

目录

牛客.求和​编辑

牛客.abb

牛客.合并k个有序链表

牛客.滑雪(暴力->递归->记忆化搜索)

牛客.旋转字符串 


牛客.求和

 我没想到是dfs,另外我的dfs能力确实也不强,另外难度大的是他的那个输出

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static int m;static int n;//用来标记路径中选择了谁static  boolean[]choose=new boolean[11];//标记总和static  int sum=0;public static void dfs(int x){if(sum==m){for(int i=1;i<=n;i++){if(choose[i]){System.out.print(i+ " ");}}System.out.println("");return;}if(sum>m||x>n) return;//选择x或者不选择xsum+=x;
//标记已经选择choose[x]=true;dfs(x+1);choose[x]=false;sum-=x;//假如不选择x,对任何东西都没有影响dfs(x+1);}public static void main(String[] args) {Scanner in = new Scanner(System.in);n=in.nextInt();m=in.nextInt();//从1开始dfs(1);}
}

所以解法:采用如果两个相同,视为一个位置

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param str string字符串 * @return string字符串ArrayList*/boolean[]vis;char[]s;ArrayList<String>m=new ArrayList<>();int n=0;StringBuffer p=new StringBuffer();public void  dfs(int pos){if(pos==n){m.add(p.toString());return ;}for(int i=0;i<n;i++){if(vis[i]==true){continue;}if(i>0&&s[i]==s[i-1]&&vis[i-1]==true){continue;}p.append(s[i]);vis[i]=true;dfs(pos+1);vis[i]=false;p.deleteCharAt(p.length()-1);}}public ArrayList<String> Permutation (String str) {n=str.length();vis=new boolean[n];s=str.toCharArray(); Arrays.sort(s);dfs(0); return   m;}
}

牛客.abb

解法:动态规划+哈希表(子序列问题)

1.状态表示:

dp[i]:以i位置为结尾的子序列中,有多少个_xx

2.返回值:

整张dp表的和

3.状态转移方程:

dp[i]=f[x]:应该是更新前的f[x],因为我们要统计多少个_xx应该是前面有多少个_x

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n=in.nextInt();String aa=in.next();char[]a=aa.toCharArray();int []f=new int[26];int []g=new int[26];long ret=0;for(int i=0;i<n;i++){ret+=f[a[i]-'a'];f[a[i]-'a']=f[a[i]-'a']+i-g[a[i]-'a'];g[a[i]-'a']=g[a[i]-'a']+1;}System.out.print(ret);}
}

牛客.合并k个有序链表

 

import java.util.*;/*
//  * public class ListNode {
//  *   int val;
//  *   ListNode next = null;
//  *   public ListNode(int val) {
//  *     this.val = val;
//  *   }
//  * }
//  */public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param lists ListNode类ArrayList * @return ListNode类*/public ListNode mergeKLists (ArrayList<ListNode> lists) {int n=lists.size();if(n==0||(n==1&&lists.get(0)==null)||(n==2&&lists.get(0)==null&&lists.get(1)==null)){return new ListNode(0).next;}PriorityQueue <Integer> q=new PriorityQueue<>();for(int i=0;i<lists.size();i++){ ListNode a=lists.get(i);while(a!=null){q.add(a.val);a=a.next;}} ListNode p=new ListNode(q.poll());ListNode head=p;while(!q.isEmpty()){p.next=new ListNode(q.poll());p=p.next;}return  head;}
}

牛客.滑雪(暴力->递归->记忆化搜索)

单纯的dfs,没有记忆化

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static int n = 0;static int m = 0;static int [][]arr=new int[101][101];static int[]dx={0,0,1,-1};static int[]dy={1,-1,0,0};public static int dfs(int p1,int p2){int len=1;for(int i=0;i<4;i++){int x=p1+dx[i];int y=p2+dy[i];if(x>=0&&x<n&&y>=0&&y<m&&arr[x][y]<arr[p1][p2]){//四种情况下点最大值len=Math.max(len,dfs(x,y)+1);}}return len;}public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();m = in.nextInt();arr=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){arr[i][j]=in.nextInt();}}int ret=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){ret=Math.max(ret,dfs(i,j));}}System.out.print(ret);}
}

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static int n = 0;static int m = 0;static int [][]arr=new int[101][101];static int[]dx={0,0,1,-1};static int[]dy={1,-1,0,0};
//使用dp表来保存 从区域出发最长递减子序列static int[][]dp=new int[101][101]; public static int dfs(int p1,int p2){if(dp[p1][p2]!=0){
//因为最短的长度是1,所以无需初始化。dp[p1][p2]有值return dp[p1][p2];}int len=1;for(int i=0;i<4;i++){int x=p1+dx[i];int y=p2+dy[i];if(x>=0&&x<n&&y>=0&&y<m&&arr[x][y]<arr[p1][p2]){//四种情况下点最大值len=Math.max(len,dfs(x,y)+1);}}//这里dfs走过之后,再dp[p1][p2]存储当前位置的最长递减子序列dp[p1][p2]=len;return len;}public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();m = in.nextInt();arr=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){arr[i][j]=in.nextInt();}}int ret=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){ret=Math.max(ret,dfs(i,j));}}System.out.print(ret);}
}

牛客.旋转字符串 

解法:规律+接口

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 旋转字符串* @param A string字符串* @param B string字符串* @return bool布尔型*/public boolean solve (String A, String B) {if (A.length() != B.length()) {return false;} else if (A.equals(B)) {return true;}return (A + A).contains(B);}
}

http://www.yayakq.cn/news/734845/

相关文章:

  • 百度广州给做网站公司空气净化器用什么网站做外贸
  • 如何让百度快照找到自己的网站最近10条重大新闻
  • 网站内页跳转wap提供商城网站
  • 如何做视频播放网站企业宣传片制作公司天津
  • 被百度收录的网站有哪些东莞网站关键词排名
  • 重庆潼南网站建设企业信息管理系统实训报告
  • 专业建网站平台北京建设网站图片
  • 山东建设厅科技处网站湖北网站建设开发
  • 莱阳建设局网站来年做那个网站致富
  • tp做的网站封装成app微信网页注册入口
  • 网站建设实施计划河北网络公司有哪些
  • 杭州市做网站的公司wordpress头部警告错误
  • 免费建站的软件品牌设计公司网站源码
  • 深圳论坛网站建设4a广告公司什么意思
  • 网站建设后台管理怎么进入网站建设找
  • 买了个区域名怎么做网站网站建设竞价托管
  • 做教程网站资源放哪里有青岛关键词优化平台
  • 网站导航内链建设宁波商城网站开发设计
  • h5做怎么做微网站做两个阿里网站吗
  • 常州企业建站系统模板自学做网站多久
  • 怎么选择锦州网站建设中信建设有限责任公司电子商务平台
  • psd做成网站招商局网站建设方案
  • 保定网站维护公司公司想制作网站吗
  • 建网站公司要钱吗科技手抄报内容
  • 用python做的大型网站报告基因
  • 网站流量统计表格华为网站建设方案模板
  • 做视频网站要什么软件有哪些建立网站官网
  • 招商加盟网站怎么做wordpress搬家后台还是老网站
  • 网站建设销售话好看的个人博客
  • 西安地区专业做网站公司余姚生活网