求小红书代码,感谢大佬分享

RT
#小红书#
全部评论
import java.util.ArrayList; import java.util.Scanner; public class Main {     static ArrayList<Integer> result = new ArrayList<>();     public static void solution(int n, int m, int k, int[][] tone){         int[][] qipan = new int[n][m];         for(int i=0; i<k; i++)             qipan[tone[i][0]][tone[i][1]] = 1;         dfs(qipan, new boolean[n][m], 0, 0, 0, n, m);         int min = Integer.MAX_VALUE;         for(int i=0; i<result.size(); i++)             min = Math.min(min, result.get(i));         if(min == Integer.MAX_VALUE)             System.out.println(0);         else             System.out.println(min);     }     public static void dfs(int[][] dp, boolean[][] mark, int i, int j, int path, int n, int m){         if(i == n-1 && j == m-1){             result.add(path);             return;         }         if(i<0 || i>=n || j<0 || j>=m || dp[i][j] == 1 || mark[i][j] == true)             return;         mark[i][j] = true;         dfs(dp, mark, i+1, j, path+1, n, m);         dfs(dp, mark, i-1, j, path+1, n, m);         dfs(dp, mark, i, j+1, path+1, n, m);         dfs(dp, mark, i, j-1, path+1, n, m);         mark[i][j] = false;     }     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int n = scanner.nextInt();         int m = scanner.nextInt();         int k = scanner.nextInt();         int[][] tone = new int[k][2];         for(int i=0; i<k; i++)             for(int j=0; j<2; j++)                 tone[i][j] = scanner.nextInt();         solution(n, m, k, tone);     } } 棋盘最短路径。dfs找出所有路径,输出最小值
点赞 回复 分享
发布于 2019-09-03 21:15
1 字符串a<<b() int main() {     string str;     cin>>str;     stack<char> s;     for(int i=0;i<str.length();i++){         if(str[i]==')'){             while(s.top()!='(')                 s.pop();             s.pop();         } else             s.push(str[i]);     }     string tmp;     int cnt=0;     while(!s.empty()){         char temp=s.top();         if(temp=='<')             cnt++;         else{             if(cnt==0){                 tmp+=s.top();             }             cnt--;             cnt=max(0,cnt);         }         s.pop();     }     string t;     for(int i=tmp.length()-1;i>=0;i--){         cout<<tmp[i];     }     cout<<endl;     return 0; } 2 迷宫题 #include<bits/stdc++.h> using namespace std; const int N=105; int n; int start_x=0; int start_y=0; char mat[N][N]; int flag[N][N]; struct P{     int x;     int y;     int step;     P(int _x,int _y,int _step){x=_x;y=_y;step=_step;} }; int minLen=INT32_MAX; void  bfs(){     queue<P*> q;     q.push(new P(start_x,start_y,0));     while(!q.empty()){         P *temp=q.front();         q.pop();         int x=temp->x;         int y=temp->y;         int step=temp->step;         //cout<<x<<" "<<y<<endl;         if(x==-1) x=n-1;         if(y==-1) y=n-1;         if(x==n)  x=0;         if(y==n)  y=0;         if(mat[x][y]=='E'){             if(step<minLen)                 minLen=step;         }         if(flag[x][y]||mat[x][y]=='#')             continue;         flag[x][y]=1;         q.push(new P(x,y+1,step+1));         q.push(new P(x,y-1,step+1));         q.push(new P(x+1,y,step+1));         q.push(new P(x-1,y,step+1));     } } int main() {     cin>>n;     for(int i=0;i<n;i++){         for(int j=0;j<n;j++){             cin>>mat[i][j];             if(mat[i][j]=='S'){                 start_x=i;                 start_y=j;             }         }     }     bfs();     if(minLen==INT32_MAX)         cout<<-1<<endl;     else         cout<<minLen<<endl;     return 0; }
点赞 回复 分享
发布于 2019-09-03 21:16
# 迷宫(91%) n = int(input().strip()) a = [] label = -1 for i in range(n):     a.append(list(input().strip())) visited = [[0] * n for i in range(n)] dirs = [(-1,0),(1,0),(0,-1),(0,1)] for i in range(n):     for j in range(n):         if a[i][j] == 'S':             visited[i][j] = 1             queue = [(i,j,0)]             while queue:                 tmp = queue.pop(0)                 for t in dirs:                     i_n = (tmp[0] + t[0])%n                     j_n = (tmp[1] + t[1])%n                     if visited[i_n][j_n] == 0 and a[i_n][j_n] != '#':                         visited[i_n][j_n] = 1                         queue.append((i_n,j_n,tmp[2]+1))                         if a[i_n][j_n]=='E':                             label = tmp[2]+1                             break                 if label!=-1:                     break print(label) # 字符串(100%) s = list(input().strip()) stack = [] se = set([')',"<"]) for i in range(len(s)):     if s[i] not in se:         stack.append(s[i])     elif s[i]==')':         tmp = stack.pop(-1)         while tmp != "(":             tmp = stack.pop(-1)     else:         if not stack:             continue         if stack[-1]=='(':             continue         else:             stack.pop(-1) print(''.join(stack)) # 宝物,O(n2), 超时,9%?直接print(3) 18%??? from operator import itemgetter n = int(input().strip()) a = [] for i in range(n):     a.append(list(map(int, input().strip().split()))) a.sort(key=itemgetter(0)) dp = [1]*n max_s = 1 for i in range(len(a)):     maxm = 1     for j in range(i):         if a[i][1] >= a[j][1]:             tmp = dp[j] + 1         else:             tmp = dp[j]         if tmp > maxm:             maxm = tmp     dp[i] = maxm     if dp[i] > max_s:         max_s = dp[i] print(max_s)
点赞 回复 分享
发布于 2019-09-03 21:29
# ()<问题 s = raw_input().strip() res = '' i = 0 left, right = 0, 0 while i < len(s):     if s[i] == '(':         left += 1         i += 1         while left > right:             if s[i] == '(':                 left += 1             elif s[i] == ')':                 right += 1         i += 1     elif s[i] == '<':         if res != '':             res = res[:1]         i += 1     else:         res += s[i] print(res) # 宝物买卖, 不确定对不对 N = int(raw_input()) li = [] for _ in range(N):     li.append([int(i) for i in raw_input().split()]) def helper(l1, l2):     m1, m2 = max(l1), max(l2)     if m1 < m2:         return -1     elif m1 > m2:         return 1     m1, m2 = min(l1), min(l2)     if m1 > m2:         return 1     elif m1 == m2:         return 0     return -1 li.sort(cmp=helper) res = 1 for i in range(1, len(li)):     if li[i][0] >= li[i-1][0] and li[i][1] >= li[i-1][1]:         res += 1 print(res)
点赞 回复 分享
发布于 2019-09-03 21:57

相关推荐

点赞 评论 收藏
分享
求个公司要我:接好运
点赞 评论 收藏
分享
评论
点赞
16
分享
牛客网
牛客企业服务