java/c小白的笔记

目录

2021.1.4

2021-01-05

2021年1月6日

2021-01-07

2021-1-10

2021-01-11

2021-01-17

2021-1-17

1-17打印问题

--2021 01 18

01-18

01-18

2021-1-19

2021-1-22

2021-01-23

2021-1-25

2021-1-26

2021-02-27

01-28

2021-01-31

2021-2-1

2021-2-2

2021-2-3

2021-2-4

2021-2-6矩阵乘法

2021-2-7贪心策略

2021-2-8递归与分治

2021-02-09

2021-2-18

2021-3-10


2020-12-30

一、Java

一、public class main{}

public 公共类,即大家都可以访问的类。

二、public static void main(String[] args)

java程序的入口地址。

public:表示程序在任何场合够可以被引用。

static:静态的,不依赖类的对象。

void main():不需要返回值。

三、System.out.println(a+" "+b+" "+c);

输出。

四、if(a==3)与if(a=3)

if(a==3)是a等于3

if(a=3)是把a赋值3

五、System.out.println(a+" "+b+" "+c+" ")//按行输出,每行两个变量之间是空格。

注意输出语法格式。a、b、c是变量,“ ”里面是内容。

2021.1.4

二、C语言

1、#include<stdio.h>

编译预处理命令,程序编译之前要处理的内容。

2、printf("%d %d %d\n",a,b,c);  输出语句。//按行输出,每行两个变量之间是空格。

三、C++

1、C with STL

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

int main(){

}

2、数学问题:反转数字

  • int re(int x){
  •     int s=0;
  •     while(x!=0){
  •         int r=x%10;
  •         x=x/10;
  •         s=r+s*10;
  •     }
  •     return s;
  • }

2021-01-05

1、数学问题:与7相关:返回-1是与7无关,返回0是与7相关。

int seven(int x){
    if(x%7==0)
        return 0;
    else{
         while(x!=0){
             if(x%10==7){
                 return 0;
             }
             x=x/10;
         }
         return -1;
     }
}

2语法

while(scanf("%d",&n)!=EOF){

}

 printf("%d\n",sum);

2021年1月6日


一、换个说法写等式

    scanf("%d",&n);
                if(x+y+z==100 && float(5*3*x+3*3*y+z)<=3*n)//把1/3转换为3*n
                    printf("x=%d,y=%d,z=%d\n",x,y,z);//注意输出语句的语法;
            }
return 0;
}

二、火鸡问题

关于书写习惯,常量用X,Y,变量用x,y。
    scanf("%d%d%d%d",&N,&X,&Y,&Z);//输入语句的语法,注意scanf的“%d”没有任何标点。
    for(a=9;a>=1;a--){//从大到小更方便;
        for(b=9;b>=0;b--){
            if((a*10000+X*1000+Y*100+Z*10+b)%N==0){
                    printf("%d %d %ld\n",a,b,(a*10000+X*1000+Y*100+Z*10+b)/N);
                flag=1;    
                break;}//break是跳出一层循环。
                }
        if(flag==1)
            break;//第二层循环也要跳出

    }
        if(flag==0)//注意边界值
        printf("0\n");
    return 0;
}

2021-01-07

一、判断是否是闰年

int IsLeapYear(int year){
    if((year%400==0) || (year%4==0 && year%100 !=0))
        return 1;
    else
        return 0;
}

二、预处理

int datatab[2][13]={
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31}
};

三、计算

    while(scanf("%d%d%d",&year,&month,&day)!=EOF){
        int sum=0;;
        int i=IsLeapYear(year);
        for(int j=1;j<=month;j++){
           sum=sum+datatab[i][j-1];
        }
        sum=sum+day;
        printf("%d\n",sum);
    }

四、自己写的乱乱的

int main(){
    int year,month,day,n;
    while( scanf("%d%d",&year,&n ) != EOF){
        int i= IsLeapYear(year);
        int j, sum=0,month=0,day=0;
        while(sum<n){
            sum=sum+data[i][j];
            j++;
        }
        month=j-1;
        day=n-(sum-data[i][j-1]);
        printf("%04d-%02d-%02d\n",year,month,day);
    }
    return 0;
}

2021-1-10

#include<iostream>
#include<cstdio>
using namespace std;
int data[2][13]={
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,28,31,30,31,30,31,31,30,31,30,31}
};
int IsLeapYear(int year){
    if((year%400==0) || (year%4==0&&year%100!=0))
        return 1;
    else
        return 0;
}
int YearDays(int year){
        if(IsLeapYear(year)==1)
        return 366;
else
        return 365;
}
int main(){
    int m;
    scanf("%d",&m);
    while(m--){//输出m行个结果
      int year=0,month=0,day=0,n;
      scanf("%d%d%d%d",&year,&month,&day,&n);
        int i= IsLeapYear(year);
        int sum=0;
        for(int j=0;j<month;j++){
            sum=sum+data[i][j];
        }
        sum=sum+day+n;//输出当前日期的天数
        while(sum>YearDays(year)){
            year++;//确定年
            sum=sum-YearDays(year);
        }
            month=0;
            int row=IsLeapYear(year);
         while(sum>data[row][month]){
             sum=sum-data[row][month];
             month++;//确定月
         }
             day=sum;//确定日
             printf("%04d-%02d-%02d\n",year,month,day);
        }
return 0;
    }

 

2021-01-11

日期差值

#include<iostream>
#include<cstdio>
using namespace std;
int data[2][13]={//预处理
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int IsLeapYear(int year){//判断是否是闰年
    if((year%400==0) ||(year%4==0&&year%100!=0))
        return 1;
    else 
        return 0;
}
int yearDays(int y){//计算一年的天数是365还是366
    if(IsLeapYear(y)==1)
        return 366;
    else
        return 365;
}
int days(int year,int month,int day){
    int sum=0;//计算当前日子是今年的多少天
    int i=IsLeapYear(year);
    for(int j=0;j<month;j++){
        sum=sum+data[i][j];
    }
    sum=sum+day;
    return sum;
}
int main(){
    int d1,d2;
    int year1,month1,day1;
    int year2,month2,day2;
    int result=0;
    while( scanf("%d%d",&d1,&d2)!=EOF){
        if(d1>d2){//总是让d2大于d1
            int temp=d1;
            d1=d2;
            d2=temp;
        }
    year1=d1/10000;month1=((d1%10000)/100);day1=(d1%100);
    year2=d2/10000;month2=((d2%10000)/100);day2=(d2%100);
        
        if(year1==year2){
        result=days(year2,month2,day2)-days(year1,month1,day1)+1;
    }
        else if(year2>year1){
            result=days(year2,month2,day2)-days(year1,month1,day1)+1;
            for(int y=year1;y<year2;y++){
                result=result+yearDays(y);//这里有一个循环
            }
        }
            printf("%d\n",result);
    }

}

 

2021-01-17


 

#include<iostream>
#include<cstdio>
#include<cstring>//字符串
using namespace std;
int data[2][13]={
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31}};
int IsLeapYear(int year){
    if((year%400==0)||(year%4==0&&year%100!=0))
        return 1;
    else
        return 0;
}
int daysOfYear(int year){
    if(IsLeapYear(year)==1)
        return 366;
    else
        return 365;
}
int days(int year,int month,int day){
    int sum=0;
    for(int i=1;i<year;i++){
        sum=sum+daysOfYear(i);
    }
    int row=IsLeapYear(year);
    for(int j=0;j<month;j++){
        sum=sum+data[row][j];
    }
    sum=sum+day;
    return sum;
}
char week_name[7][20]={
    "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
};

char month_name[13][20]={
    "","January","February","March","April","May","June","July","August",
    "September","October","November","December"
};

int main(){
    int year,month,day;
    char m[20];
    while(scanf("%d%s%d",&day,&m,&year)!=EOF){
         for(month=0;month<=13;month++){
            if(strcmp(m,month_name[month])==0) break;  //strcmp(p, p1) 比较字符串
        }
        int n=days(year,month,day);
        int w=n%7;
       printf("%s\n",week_name[w]);    //
    }
    return 0;
}

2021-1-17

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
    int keytab[26]={
    1,2,3,1,2,3,
    1,2,3,1,2,3,1,2,3,
    1,2,3,4,1,2,3,1,2,3,4};
int main(){
    char s[100];
    scanf("%s",&s);

    int sum=0;
    for(int i=0;i<strlen(s);i++){
        sum=sum+keytab[s[i]-'a'];//按键时间//利用与‘a’的差值
        }
for(int i=1;i<strlen(s);i++){
if(s[i]-s[i-1]==(keytab[s[i]-'a']-keytab[s[i-1]-'a'])){//判断是否是同一个按键上的数字
sum=sum+2;//间隔时间
        }

    } 
    printf("%d\n",sum);
}

 

1-17打印问题

#include<iostream>
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    char s[100];
    while(scanf("%s",&s)!=EOF){
        int i,n1=0;
        int N=strlen(s);
        for(i=1;i<N;i++){
            if(i<=(N+2-2*i)&&i>n1){
                n1=i;
            }
        }
            int n2=N+2-2*n1;
            int j=N;int k;
            for(i=0,j=N-1;j-i+1>n2;i++,j--){
                printf("%c",s[i]);
                for(k=0;k<n2-2;k++){
                    printf(" ");
                }
                printf("%c\n",s[j]);
            }
             for(;i<=j;i++){
                 printf("%c",s[i]);
             }

                 printf("\n");
    }
    return 0;
}

--2021 01 18


#include<algorithm>

int main(){
    int m;
    while(scanf("%d",&m)!=EOF){
        int a[m];
        for(int i=0;i<m;i++){
        scanf("%d",&a[i]);
        }
        sort(a,a+m);//C++内部基于快速排序的sort()函数,默认升序排序
        for(int j=0;j<m;j++){
            printf("%d ",a[j]);
        }
        printf("\n");
    }
    return 0;
}

01-18

 

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct Student{
   int num;
   int grade;
};

bool Compare(Student x,Student y){
    if(x.grade==y.grade)
        return x.num<y.num;
    else{
        return x.grade<y.grade;
    }
}

int main(){
    int n;
    scanf("%d",&n);
    Student student[n];
    for(int i=0;i<n;i++){
        scanf("%d%d",&student[i].num,&student[i].grade);
    }
        sort(student,student+n,Compare);
    for(int j=0;j<n;j++){
        printf("%d %d\n",student[j].num,student[j].grade);
    }
    return 0;
}

01-18

 

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct Student{
    string name;
    int grade;
    int order;
};
bool compare0(Student x,Student y){//降序
    if(x.grade==y.grade)
        return x.order<y.order;
    else
       return  x.grade>y.grade;
}  
bool compare1(Student x,Student y){//升序
    if(x.grade==y.grade)
        return x.order<y.order;
    else
       return  x.grade<y.grade;
}

int main(){
    int n;
    int flag;
    while(scanf("%d%d",&n,&flag)!=EOF){
    Student student[n];
    for(int i=0;i<n;i++){
        //scanf("%s%d",&student[i].name,&student->grade);
        cin>>student[i].name>>student[i].grade;
        student[i].order=i;
    }
    if(flag==0){
    sort(student,student+n,compare0);
    }
    else {
    sort(student,student+n,compare1);
    }

        for(int j=0;j<n;j++){
//printf("%s %d\n",student[j].name,student[j]->grade);
        cout<<student[j].name<<" "<<student[j].grade<<endl;//字符串输入输出解题技巧,不能用//的,用C++格式。
        }
    }
  return 0;
}

 

2021-1-19

 

 while(cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]>>a[7]>>a[8]>>a[9]){

}

 

2021-1-22

 

 

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int M=100;
int a[M];

//二分法查找
bool BinarySearch(int n,int target){
    int left=0;
    int right=n-1;
    while(left<=right){
        int middle=(left+right)/2;
        if(target<a[middle]){
            right=middle-1;
        }
        else if(target>a[middle]){
            left=middle+1;
        }
        else {
            return true;
        }
    }
    return false;
}

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
        }
        sort(a,a+n);//先排序,再查找
        int m;
        scanf("%d",&m);
        int t;
        for(int j=0;j<m;j++){
            scanf("%d",&t);
         if(BinarySearch(n, t)){
            printf("YES\n");
         }
         else {
            printf("NO\n");
         }
        }
    }
    return 0;
}

 

2021-01-23

 

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct Arr{
    int a,b;
};
bool compare(Arr x,Arr y){
    if(x.a==y.a){
        return x.b<y.b;
    }
    else{
        return x.a<y.a;
    }
}
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        Arr s[n];
        for(int i=0;i<n;i++){
            scanf("%d%d",&s[i].a,&s[i].b);
        }
        sort(s,s+n,compare);
        printf("%d %d\n",s[0].a,s[0].b);
    }
    return 0;
}

2021-1-25

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
//数字当做字符串处理;
int main(){
    string str1,str2;
    while(cin>>str1>>str2){
        int a=0;
        for(int i=0;i<str1.size();i++){
            for(int j=0;j<str2.size();j++){
                a=a+(str1[i]-'0')*(str2[j]-'0');//str[i]-'0' 就是数字字符的ascii码转换成数值.比如'9'=57 因为数字的ascii码是连续的所以'9'-'0'=57-48=9
            }
        }
        printf("%d\n",a);
    }
    return 0;
}

 

2021-1-26

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    string str;
    while(getline(cin,str)){//cin>>str 空格跳出
        for(int i=0;i<str.size();i++){
            if(str[i]=='z'||str[i]=='Z'){
                str[i]=str[i]-'25';//ASCII码怎么算
            }
            else if((str[i]>='A'&&str[i]<='Y')||(str[i]>='a'&&str[i]<='y') )  //'Z'表示ASCII码
                str[i]=str[i]+1;//不是'1'
        }

//a-z:97-122,A-Z:65-90,0-9:48-57。
        cout<<str<<endl;
    }
    return 0;
}

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    string str;
    while(getline(cin,str)){
        if(str=="ENDOFINPUT"){
            break;
        }

        getline(cin,str);
        for(int i=0;i<str.size();i++){
            if(str[i]>='A'&&str[i]<='Z'){
                str[i]='A'+(str[i]-5-'A'+26)%26;//核心
            }
        }
        cout<<str<<endl;
        getline(cin,str);
    }
    return 0;
    }

 

2021-02-27

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    int num[500];
    string str1,str2;
    while(getline(cin,str1)){
        if(str1=="#"){
            break;
        }

        getline(cin,str2);
        memset(num,0,sizeof(num));//初始化数组。sizeof() 是一个判断数据类型或者表达式长度的运算符
        for(int i=0;i<str2.size();i++){
            num[str2[i]]++;
        }
        for(int i=0;i<str1.size();i++){
            printf("%c %d\n",str1[i],num[str1[i]]);
        }//ASCII码的值对应下标

    }
    return 0;
}

 

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    int num[500];
    string str;
    memset(num,0,sizeof(num));
    while(getline(cin,str)){
        for(int i=0;i<str.size();i++){
            if(str[i]<='Z'&&str[i]>='A')
            num[str[i]]++;

        }
        for(int i=65;i<=90;i++){//A-Z 65-90;
            printf("%c:%d\n",i,num[i]);

        }
        return 0;
    }
    return 0;
}

01-28

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
    string str;
    while(getline(cin,str)){
        if(str[0]>='a' &&str[0]<='z'){
            str[0]=str[0]-32;
        }
        for(int i=0;i<str.size();i++){
            if((str[i-1]==' '||str[i-1]=='\t'||str[i-1]=='\r'||str[i-1]=='\n')&&str[i]>='a'&&str[i]<='z'){
                str[i]=str[i]-32;

            }
        }
        cout<<str<<endl;
    }
    return 0;
}

#include<iostream>
#include<cstdio>
#include<algorithm>//排序
#include<cstring>
using namespace std;
int main(){
    string str;
    while(getline(cin,str)){
        string a[str.size()];//数组存储
        for(int i=0;i<str.size();i++){
            a[i]=str.substr(i,str.size()-i);//i开始截取几位
        }
        sort(a,a+str.size());//排序
        for(int i=0;i<str.size();i++){
            cout<<a[i]<<endl;
        }
    }
    return 0;
}

 

2021-01-31

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> numE;
vector<int> numG;

int sum(int x){
    int sum=0;
    for(int i=1;i<x;i++){
        if(x%i==0){
            sum=sum+i;
        }
    }
    return sum;
}

int main(){
    for(int i=2;i<=60;i++){
        if(i==sum(i)){
            numE.push_back(i);
        }
        else if(i<sum(i)){
            numG.push_back(i);
        }
    }
    printf("E:");
    for(int i=0;i<numE.size();i++){
        printf(" %d",numE[i]);

    }
   // printf("\n");
    printf(" G:");
    for(int i=0;i<numG.size();i++){
        printf(" %d",numG[i]);
    }
    printf("\n");
    return 0;
}

 

#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
stack<long long> s;
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        while(n--){
            long long num;
            scanf("%11d",&num);
            s.push(num);
        }
            while(!s.empty()){
                printf("%d ",s.top());
                s.pop();
            }
    }
    return 0;
}

 

2021-2-1

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;

int main(){//进制转化
    unsigned int n;
    while(scanf("%d",&n)!=EOF){
        scanf("%d",&n);
        vector<int> b;
        while(n!=0){
            b.push_back(n%2);
            n=n/2;
        }

        for(int i=b.size()-1;i>=0;i--){
            printf("%d",b[i]);
        }

        printf("\n");
    }
    return 0;
}

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
char IntToChar(int x){
    if(x<10){
        return x+'0';
    }
    else{
        return x-10+'a';
    }
}
int CharToInt(char c){
    if(c>='0'&&c<='9'){
        return c-'0';
    }
    else{
        return c-'A'+10;
    }
    
}

int main(){
    int m,n;
    scanf("%d%d",&m,&n);
    string str;
    cin>>str;
    long long number;
    for(int i=0;i<str.size();i++){
        number=number*m;
        number=number+CharToInt(str[i]);
    }

    vector<char>answer;
    while(number!=0){
        answer.push_back(IntToChar(number%n));
        number=number/n;
    }

    for(int i=answer.size()-1;i>=0;i--){
        printf("%c",answer[i]);
    }
    printf("\n");
    return 0;
}

 

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int charToInt(char x){
    if(x<='9')return x-'0';
    else return x-'A'+10;
}
char intToChar(int x){
    if(x<=9)return x+'0';
    else return x-10+'A';
}
string divide(int x,string a,int y){
    string res;
    while(a.size()!=0){
        int remainder=0;
        for(int i=0;i<a.size();i++){        //    a/y一次
            int num=remainder*x+charToInt(a[i]);
            a[i]=intToChar(num/y);
            remainder=num%y;
        }
        res+=(intToChar(remainder));       //   res加上最后一位的余数
        int pos=0;
        while(a[pos]=='0')pos++;//因为字符串除法有前导0存在的可能,所以把‘0’去掉
        a=a.substr(pos);
    }
    reverse(res.begin(),res.end());       //因为是相反的,随意最后进行反向。
    return res;
}
int main(){
    int x,y;string a;
    while(cin>>x>>a>>y){
        for(int i=0;i<a.size();i++){
            if(a[i]>='a'&&a[i]<='z')
                a[i]=a[i]-'a'+'A';
        }
        cout<<divide(x,a,y)<<endl;
    }
    return 0;
}

2021-2-2

#include<iostream>
#include<cstdio>
using namespace std;
int s(int a,int b){
    if(b==0){
        return a;
    }
    else{
        return s(b,a%b);
    }
}

int main(){
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF){
        printf("%d\n",s(a,b));
    }
    return 0;
}

 

2021-2-3

#include<cstdio>
#include<cstdio>
using namespace std;
int s(int a,int b){
    if(b==0){
        return a;
    }
    else{
        return s(b,a%b);
    }
}
int main(){
    int n;
    int count=0;
    while(scanf("%d",&n)!=EOF){
        int num[n];
        for(int i=0;i<n;i++){
            scanf("%d",&num[i]);
        }
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
            if(s(num[i],num[j])==1){//两个数的最大公约数是1,真分数
                count++;
            }
            }
        }
        printf("%d\n",count);
    }
        return 0;
}

2021-2-4

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int judge(int x){
    if(x<2){
        return 0;
    }
    int b=sqrt(x);
    for(int i=2;i<=b;i++){
        if(x%i==0){
            return 0;
        }
    }
    return 1;
}

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        if(judge(n)==1){
            printf("yes\n");
        }
        else if(judge(n)==0){
            printf("no\n");
        }
    }
    return 0;
}

 

#include<iostream>
#include<cstdio>
#include<vector>
#include<cmath>
#include<algorithm>

using namespace std;
vector<int> klist;
vector<int> primelist;

int judge(int x){
    if(x<=1){
        return 0;
    }
    int n=sqrt(x);
    for(int i=2;i<=n;i++){
        if(x%i==0){
            return 0;
        }
    }
    return 1;
}
int main(){
    int k;
    while(cin>>k){
        klist.push_back(k);
    }
    sort(klist.begin(),klist.end());
    int n=klist[klist.size()-1];
    for(int i=2;primelist.size()<=n;i++){//
        if(judge(i)==1){
        primelist.push_back(i);
        }
    }
    for(int j=0;j<klist.size();j++){
        printf("%d\n",primelist[klist[j]-1]);
    }
    return 0;
}

 

2021-2-6矩阵乘法

#include<iostream>
#include<cstdio>
using namespace std;
struct Matrix{
    int matrix[3][3];
    int row,col;
    Matrix(int r,int c):  row(r),col(c){} //构造函数
};
Matrix mutiply(Matrix x,Matrix y){
    Matrix answer(x.row,y.col);
    for(int i=0;i<answer.row;i++){
        for(int j=0;j<answer.col;j++){
            answer.matrix[i][j]=0;
            for(int k=0;k<x.col;k++){
                answer.matrix[i][j]+=x.matrix[i][k]*y.matrix[k][j];
        }
    }
}
    return answer;
}
void printM(Matrix m){
    for(int i=0;i<m.row;i++){
        for(int j=0;j<m.col;j++){
            printf("%d ",m.matrix[i][j]);
        }
        printf("\n");
    }
    return;
}
int main(){
    Matrix x(2,3);
    Matrix y(3,2);
    for(int i=0;i<x.row;i++){
        for(int j=0;j<x.col;j++){
            scanf("%d",&x.matrix[i][j]);
        }
    }
        for(int i=0;i<y.row;i++){
        for(int j=0;j<y.col;j++){
            scanf("%d",&y.matrix[i][j]);
        }
    }
    Matrix answer =mutiply(x,y);
    printM(answer);
    return 0;
}

 

2021-2-7贪心策略

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
    int a;
    while(scanf("%d",&a)!=EOF){
        int min;
        int max;
        if(a%2!=0){
            min=0;
            max=0;
        }
        else if(a%2==0){
            min=a/4+(a%4)/2;
            max=a/2;
        }
        printf("%d %d\n",min,max);
    }
}

2021-2-8递归与分治

#include<iostream>
#include<cstdio>
using namespace std;
long long s(int x){
    if(x==0){
        return 1;//递归出口
    }
    else{
    return s(x-1)*x;
    }

    }
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        printf("%lld\n",s(n));
    }
    return 0;
}

#include<iostream>
#include<cstdio>
using namespace std;
int s(int x){
    if(x==0||x==1){
        return x;
    }
    else{
        return s(x-1)+s(x-2);
    }
}

int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        printf("%d\n",s(n));
    }
}

 

2021-02-09

#include<iostream>
#include<cstdio>
using namespace std;
//BFS求最优解,queue
//DFS求解存在,递归,栈

int a[40];
int vis[40],res,n;
void dfs(int now,int j){
    for(int i=j;i<n;i++){
        int cal=now+a[i];
        if(cal>40){
            dfs(now,i+1);
        }
        else if(cal<40){
            dfs(cal,i+1);
        }
        else{
            res++;
        }
    }
}
int main(){
    while(cin>>n){
        res=0;
        for(int i=0;i<n;i++){
            cin>>a[i];
            vis[i]=0;
        }
        dfs(0,0);
        printf("%d\n",res);
    }
    return 0;
}

2021-2-18

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct TreeNode{
    char data;
    TreeNode* leftChild;
    TreeNode* rightChild;
    TreeNode(char c):data(c),leftChild(NULL),rightChild(NULL){}
};
TreeNode* build(string str1,string str2){
    if(str1.size()==0){
        return NULL;
    }
    char c=str1[0];
    TreeNode* root =new TreeNode(c);
    int position =str2.find(c);
    root->leftChild=build(str1.substr(1,position),str2.substr(0,position));
    root->rightChild=build(str1.substr(position+1),str2.substr(position+1));
    return root;
}
void PostOrder(TreeNode* root){//后序
    if(root==NULL){
        return;
    }
    PostOrder(root->leftChild);
    PostOrder(root->rightChild);
    printf("%c",root->data);
    return;
}

int main(){
    string str1,str2;
    while(cin>>str1>>str2){
        TreeNode* root =build(str1,str2);
        PostOrder(root);
        printf("\n");
    }
    return 0;
}

2021-3-10

 

cpu周期:频率的倒数。

cpu流水线:将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令的并行处理,以加速程序运行。

向量指令:操作对象是一组数,向量操作由指令确定向量操作数地址,并直接或间接地指定增量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值