首页 > 商汤笔试

商汤笔试

1.
Good  30%
int main()
{
    string s;
    while(cin>>s)
    {
        vector<char>v;
        for(int i=0;i<s.size();i++)
        {
            if(s[i]=='G' || s[i]=='o' || s[i]=='d')
                v.push_back(s[i]);
        }
        if(v.size()<=3) cout<<0<<endl;
        else 
        {
        vector<int>visited(v.size(),0);
        int count=0;
        for(int i=0;i<v.size();i++)
            if(visited[i]==0&&v[i]=='G')
                {
                    for(int j=i+1;j<v.size();j++)
                        if(visited[j]==0 &&  v[j]=='o' )
                            {
                                for(int k=j+1;k<v.size();k++)
                                   if(visited[k]==0 && v[k]=='o')
                                    {
                                        for(int p=k+1;p<v.size();p++)
                                        {
                                            if(  visited[p]==0  && v[p]=='d')
                                            {
                                                count++;
                                                visited[i]=1;
                                                visited[j]=1;
                                                visited[k]=1;
                                                visited[p]=1;
                                            }
                                        }
                                    }
                            }
                }
        cout<<count<<endl;
        }
        
    }
}
2.AC
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <unordered_map>
#include <vector>
#define fir first
#define se second
#define ll long long
#define pb push_back
#define mp make_pair
#define ull unsigned long long
#define cl(a, b) memset(a, b, sizeof(a))
#define quickio(a) ios::sync_with_stdio(a)
#define datatest() freopen("data.in", "r", stdin)
#define makeans() freopen("data.out", "w", stdout)
#define makedata() freopen("data.in", "w", stdout)
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pdd pair<double, double>
using namespace std;
const int maxn = 1000 + 10;
const int maxm = 1e6 + 10;
const int inf = 0x3f3f3f3f;
const ll mod = 1e9 + 7;
const int maxblock = sqrt(maxn) + 10;
const double eps = 1e-7;
const ll INF = 1e16;
struct Edge {
  int u, v, next;
} edge[maxn * maxn * 4];
int head[maxn * maxn];
int tot = 0;
int in[maxn * maxn];
void init() {
  cl(head, -1);
  cl(in, 0);
  tot = 0;
}
void addedge(int u, int v) {
  edge[tot] = Edge{u, v, head[u]};
  head[u] = tot++;
  in[v]++;
}
int n, m;
int a[maxn][maxn];
int id[maxn][maxn];
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
int legal(int x, int y) { return (x >= 1 && x <= n && y >= 1 && y <= m); }
int dp[maxn * maxn];
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) scanf("%d", &a[i][j]);
  }
  int now_id = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) id[i][j] = ++now_id;
  }
  init();
  for (int x = 1; x <= n; x++) {
    for (int y = 1; y <= m; y++) {
      for (int i = 0; i < 4; i++) {
        int xx = x + dx[i];
        int yy = y + dy[i];
        if (legal(xx, yy) && a[x][y] < a[xx][yy]) {
          addedge(id[x][y], id[xx][yy]);
        }
      }
    }
  }
  std::queue<int> q;
  cl(dp, 0);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (!in[id[i][j]]) {
        q.push(id[i][j]);
        dp[id[i][j]] = 1;
      }
    }
  }
  int Max = 0;
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    Max = std::max(Max, dp[u]);
    for (int i = head[u]; ~i; i = edge[i].next) {
      int v = edge[i].v;
      dp[v] = std::max(dp[v], dp[u] + 1);
      in[v]--;
      if (!in[v]) {
        q.push(v);
      }
    }
  }
  printf("%d\n", Max);
  return 0;
}



全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐