复习基础算法的感想

  晚上做杭电OJ,第二题是一个比较直观的题,我也是太直观了。贴出代码,供自己反省,从7点15分一直做到结束,wa9次。。。。orz。。。。看来自己的算法功底还差的很远很远。

  

  接下的几天,学习大白上的基础

算法部分。

  

#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
char a[20],b[20];
char c[20];
void shuchu(int num)
{
    if(num==0)
    return ;
    shuchu(num/2);
    printf("%d",num%2);
}
void translate(int num)
{
    if(num<16)
    printf("0");
    if(num<8)
    printf("0");
    if(num<4)
    printf("0");
    if(num<2)
    printf("0");
   /* while(num)
    {
        printf("%d",num%2);
        num=num/2;
    }*/
    shuchu(num);
}
void fun1()
{
    if(!strcmp(a,"ADD"))
        printf("000001");
    if(!strcmp(a,"SUB"))
        printf("000010");
    if(!strcmp(a,"DIV"))
        printf("000011");
    if(!strcmp(a,"MUL"))
        printf("000100");
    if(!strcmp(a,"MOVE"))
        printf("000101");
    if(!strcmp(a,"SET"))
        printf("000110");

}
void fun2()
{
    int num1=0;
    int i=0;
    while(b[i]!=‘,‘&&b[i]!=‘\0‘)
    {
        i++;
    }
    //cout<<i<<endl;
    if(i==3)
    {
        num1+=b[i-1]-‘0‘;
        num1+=(b[i-2]-‘0‘)*10;
        translate(num1);
    }
    else if(i==2)
    {
        num1+=b[i-1]-‘0‘;
        translate(num1);
    }

    if(!strcmp(a,"SET"))
    return;
    int num2=0;
    int j=0;
    i+=2;
    while(b[i]!=‘\0‘)
    {
        j++;
        i++;
    }
    if(j==1)
    {
        num2+=b[i-1]-‘0‘;
        translate(num2);
    }
    else if(j==2)
    {
        num2+=b[i-1]-‘0‘;
        num2+=(b[i-2]-‘0‘)*10;
        translate(num2);
    }
}
void fun3()
{
    char d[20];
    for(int i=0;i<6;i++)
    {
        d[i]=c[i];
    }
    d[6]=‘\0‘;
    if(strlen(c)==16||strlen(c)==11)
    {
    }
    else
    {
        printf("Error!");
        return;
    }
    if(strlen(c)==11)
    {
        if(strcmp(d,"000110"))
       {
        printf("Error!");
        return;
       }
    }
    if(strlen(c)==16)
    {
        if(!strcmp(d,"000110"))
       {
        printf("Error!");
        return;
       }
    }
    if(!strcmp(d,"000001"))
        printf("ADD R");
    else if(!strcmp(d,"000010"))
        printf("SUB R");
    else if(!strcmp(d,"000011"))
        printf("DIV R");
    else if(!strcmp(d,"000100"))
        printf("MUL R");
    else if(!strcmp(d,"000101"))
        printf("MOVE R");
    else if(!strcmp(d,"000110"))
        printf("SET R");
    else
    {
        printf("Error!");
        return;
    }

    int num1=0;
    int k=16;
    for(int i=6;i<11;i++)
    {
        num1+=(c[i]-‘0‘)*k;
        k/=2;
    }
    printf("%d",num1);
    if(!strcmp(d,"000110"))
    return;
    printf(",R");
    int num2=0; k=16;
    for(int i=11;i<16;i++)
    {
        num2+=(c[i]-‘0‘)*k;
        k/=2;
    }
    printf("%d",num2);

}
int main()
{
    int n;
    while(cin>>n)
    {
        if(n==1)
        {
            cin>>a>>b;
            fun1();
            fun2();
            cout<<endl;
        }
        if(n==0)
        {
            cin>>c;
            fun3();
            cout<<endl;
        }
    }
    return 0;
}

时间: 2024-10-04 02:48:32

复习基础算法的感想的相关文章

docNet基础学完感想

开学后的一个多月因为要准备acm省赛,所以docnet视频基本没看了!不过,虽然在省赛前每天都在做题,赛前刷了80多题吧!!但是比赛的时候就3题,渣啊!只做出了3个水题,后面两个小时搞两题就是出不来,不要紧,第一次比赛难免的.明年再继续!说实话acm真的可以锻炼人的思考问题和解决问题的能力还有就是算法能力.赛后,就稍微放松了!但是每天还是能抽出一个多小时做两题的.然后就加紧时间把docNet基础知识看完了. 有哪些基础就不赘述了!除了多线程在后面,基本都学了.当然还有长度一逼 的正则表达式也学了

基础算法之排序--快速排序

1 /************************************************************************************** 2 * Function : 快速排序 3 * Create Date : 2014/04/21 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性. 7 * 任何单位和个人不经本人允许不

九章算法 基础算法 强化算法 系统设计 大数据 安卓 leetcode 高清视频

leetcode 直播视频讲座录像 九章算法视频录像,PPT 算法班,算法强化班,Java入门与基础算法班,big data项目实战班,Andriod项目实战班 九章算法下载 九章算法面试 九章算法leetcode 九章算法答案 九章算法mitbbs 九章算法班 九章算法ppt 九章算法录像 九章算法培训 九章算法微博 leetcode 视频 九章算法偷录 算法培训 算法班课程大纲: 1 从strStr谈面试技巧与Coding Style(免费试听) 2 二分搜索与旋转排序数组 Binary S

算法录 之 基础算法

这一篇文章主要说说一些基础算法,这些算是很多其他算法的基石. 主要包括  模拟,暴力,枚举,递归,贪心,分治. 1,模拟: 顾名思义,模拟就是...饿,模拟,有一些题目就是给你一些步骤,然后你写代码一步步去模拟那些步骤就行.这类题目主要属于基础题,但是当然如果需要模拟的步骤足够恶心的话,还是比较麻烦的... 具体模拟的例子在之后的练习中会遇到的,按照题目要求一步步做就行,一般算法难度比较小. 2,暴力: 顾名思义,暴力就是...饿,暴力.比如说题目让从平面上的10个点中取三个点,让他们形成的三角

最最最最最最最最基础的C---C简介和基础算法

C简介 C是一门程序设计语言,面向过程的语言.于1972至1973年设计出来的语言. C具有32个关键字,9种控制语句,34种运算符. 函数是C的基本单位:一个C程序的执行总是从main函数开始的. C程序运行步骤:源程序--编译-->目标文件--执行-->可执行目标程序. 基础算法 完整的程序设计=数据结构+算法+程序设计方法+语言工具 算法特效: 1.有穷性:一个算法包含有限的操作步骤 2.确定性:确定算法的每一个步骤都是确定的 3.有零个或多个输入 4.有一个或多个输出 5.有效性:算法

基础算法

c语言基础算法大全 冒泡排序 选着排序 插入排序 快速排序 shell排序. 合并排序. 下面是各个排序算法的实现: 冒泡排序 void bobuleSort(int a[], int len) { int i,j,flag =1; for(i = 0; i<len; i++) { for(int j =len-1; j>i; j--) { if(a[j] <= a[i]) { int tmp = a[j]; a[j] = a[i]; a[i] = tmp; flag = 0; } }

二叉树基础算法总结

记录一些二叉树的基础算法 二叉树节点结构: typedef struct TreeNode{ int val; struct TreeNode *left; struct TreeNode *right; }TreeNode,*Node; 1.遍历 前.中.后序递归遍历: void pre_order_traversal(TreeNode *root){ if(root! = NULL){ visit(root); pre_order_traversal(root->left); pre_ord

PHP基础算法

1.首先来画个菱形玩玩,很多人学C时在书上都画过,咱们用PHP画下,画了一半. 思路:多少行for一次,然后在里面空格和星号for一次. <?php for($i=0;$i<=3;$i++){ for($j=0;$j<=3-$i;$j++){ echo ' '; } for($k=0;$k<=2*$i;$k++){ echo '*'; } echo '<br/>'; } 2.冒泡排序,C里基础算法,从小到大对一组数排序. 思路:这题从小到大,第一轮排最小,第二轮排第二小

基础算法(一)

首先必须得说本人对算法研究不深,一些简单的就得想半天,老是这样感觉不太好,遂记录下一些常见的基础算法,避免尴尬.不足之处请各位多多指教. 其次,用vs写C语言程序时可能会出现如下错误:错误 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online hel