迅雷编程

题目一 方程表达式计算



#include <iostream>
#include <string>
using namespace std;

// ax + b 的形式
struct Value
{
    int v1;  // a
    int v0;  // b
};
bool isnum(char c)
{
    return c >= '0' && c <= '9'; 
}
int toint(char c)
{
    return c - '0';
}
int main()
{
    string eq;
    //eq = "6x-5-x=2-2x";
    cin >> eq; 
    // 消除空x
    for (int i = 0; i < eq.size(); i++)
    {
        if (eq[i] == 'x' && (i == 0 || !isnum(eq[i - 1])))
            eq.insert(i, 1, '1');
    }
    //cin >> eq;
    Value values[2]{0};
    for (int i = 0, j = 0; i < eq.size(); i++)
    {
        char c = eq[i];
        if (c == '=') 
        {
            j = 1; 
            continue;
        }
        int num = 0; 
        if (isnum(c))
            num = toint(c);
        else if (c == '+')
            num = toint(eq[++i]);
        else if (c == '-')
            num = -toint(eq[++i]);
        if (eq[i + 1] == 'x')
        {
            i++; 
            values[j].v1 += num; 
        }
        else
            values[j].v0 += num;
    }
    // solve equetion 
    double A = values[0].v1 - values[1].v1;
    double B = values[1].v0 - values[0].v0; 
    if (A != 0) // 唯一解
        cout << "x=" << (int)(B / A) << endl;
    else if (A == 0 && B == 0)
        cout << "Infinite solutions" << endl;
    else if (A == 0 && B != 0)
        cout << "No solution" << endl; 
}
题目二 和组合数




import java.util.LinkedList;
import java.util.Scanner;

public class Main {     private static LinkedList<Integer> list = new LinkedList<Integer>();     static int c = 0;     static void myPrint() {         c++;     }     public static void findSum(int sum, int n) {         if (n >= 0 && sum == 0) {             myPrint();             return;         }         if (n >= 1 && sum == 1) {             list.push(1);             myPrint();             list.pop();             return;         }         if (n == 1 && sum > 1)             return;         if (sum >= n) {             list.push(n);             findSum(sum - n, n - 1);             list.pop();             findSum(sum, n - 1);         } else {             findSum(sum, sum);         }         return;     }     public static void main(String[] args) {         // TODO Auto-generated method stub         Scanner in = new Scanner(System.in);         int n = in.nextInt();         int m = in.nextInt();         findSum(m, n);         System.out.println(c);     }

}

#迅雷#
全部评论
import java.util.Scanner; public class A {     public static void main(String[] args) { Scanner in = new Scanner(System.in);      int n = in.nextInt();       int m = in.nextInt();         System.out.println(sum(n, m));     }          static int sum(int n, int m) {         if (m < 0)             return 0;         if (m == 0)             return 1;         if (m > 0 && n <= 0)             return 0;         int sum = 0;         for (int i = 1; i <= n; i++) {             sum += sum(i - 1, m - i);         }         return sum;     } }
点赞 回复 分享
发布于 2017-09-19 22:26
package com.my; import java.util.LinkedList; import java.util.Scanner; public class AAA {     private static LinkedList<Integer> list = new LinkedList<Integer>();      static int c = 0;      static void myPrint() {      c++;     }          public static void findSum(int sum, int n) {         if (n >= 0 && sum == 0) {             myPrint();              return;         }         if (n >= 1 && sum == 1) {          list.push(1);         myPrint();         list.pop();         return;         }         if (n == 1 && sum > 1)             return;         if (sum >= n) {             list.push(n);              findSum(sum - n, n - 1);              list.pop();              findSum(sum, n - 1);         } else {             findSum(sum, sum);         }          return;     }          public static void main(String[] args) {          Scanner in = new Scanner(System.in);          int n = in.nextInt();         int m = in.nextInt();         findSum(m, n);         System.out.println(c);     } } 整理了下,是对的。。。。收下我的膝盖
点赞 回复 分享
发布于 2017-09-19 20:54
第二题ac了吗?
点赞 回复 分享
发布于 2017-09-19 20:45

相关推荐

自从我室友在计算机导论课上听说了“刷&nbsp;LeetCode&nbsp;是进入大厂的敲门砖”,整个人就跟走火入魔了一样。他在宿舍门口贴了一张A4纸,上面写着:“正在&nbsp;DP,请勿打扰,否则&nbsp;Time&nbsp;Limit&nbsp;Exceeded。”日记本的扉页被他用黑色水笔加粗描了三遍:“Talk&nbsp;is&nbsp;cheap.&nbsp;Show&nbsp;me&nbsp;the&nbsp;code。”连宿舍聚餐,他都要给我们讲解:“今天的座位安排可以用回溯算法解决,但为了避免栈溢出,我建议用动态规划。来,这是状态转移方程:dp[i][j]&nbsp;代表第&nbsp;i&nbsp;个人坐在第&nbsp;j&nbsp;个位置的最优解。”我让他去楼下取个快递,他不直接去,非要在门口踱步,嘴里念念有词:“这是一个图的遍历问题。从宿舍楼(root)到驿站(target&nbsp;node),我应该用&nbsp;BFS&nbsp;还是&nbsp;DFS?嗯,求最短路径,还是广度优先好。”和同学约好出去开黑,他会提前发消息:“集合点&nbsp;(x,&nbsp;y),我们俩的路径有&nbsp;k&nbsp;个交点,为了最小化时间复杂度,应该在&nbsp;(x/2,&nbsp;y/2)&nbsp;处汇合。”有一次另一个室友低血糖犯了,让他帮忙找颗糖,他居然冷静地分析道:“别急,这是一个查找问题。零食箱是无序数组,暴力查找是&nbsp;O(n)。如果按甜度排序,我就可以用二分查找,时间复杂度降到&nbsp;O(log&nbsp;n)。”他做卫生也要讲究算法效率:“拖地是典型的岛屿问题,要先把连通的污渍区块都清理掉。倒垃圾可以用双指针法,一个指针从左往右,一个从右往左,能最快匹配垃圾分类。”现在我们宿舍的画风已经完全变了,大家不聊游戏和妹子,对话都是这样的:“你&nbsp;Two&nbsp;Sum&nbsp;刷了几遍了?”“别提了,昨天遇到一道&nbsp;Hard&nbsp;题,我连暴力解都想不出来,最后只能看题解。你呢?”“我动态规划还不行,总是找不到最优子结构。今天那道接雨水给我整麻了。”……LeetCode&nbsp;真的害了我室友!!!
老六f:编程嘉豪来了
AI时代还有必要刷lee...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务