《算法笔记》(胡凡)day2 入门模拟(1)

    科技2024-12-17  24

    1.简单模拟

    模拟题是一种“题目怎么说,你就怎么做”的题目,如果实现起来不太麻烦,就可以称之为“简单模拟”。

    这种题目几乎不涉及算法,完全是按照题目描写写代码。

    1著名的3n+1猜想

    思想: 1.若n不为1进行循环,否则输出步数; 2.n为偶数,则n=n/2;奇数n=(3*n-1)/2;步数加1;

    c语言的代码如下

    #include<stdio.h> int main() { int n; int j=0; scanf("%d",&n); while(n!=1) { if(n%2==0) { n=n/2; } else { n=(3*n+1)/2; } j=j+1; } printf("%d",j); return 0; }

    2.挖掘机技术哪家强

    代码:

    #include<stdio.h> int main() { int n; scanf("%d",&n); int a[100000]={0},b=0; int c,m; int max=0; for(int i=0;i<n;i++) { scanf("%d%d",&c,&m); a[c]=a[c]+m; } for(int i=0;i<=n;i++) { if(max<a[i]) { max=a[i]; b=i; } } printf("%d %d",b,max); return 0; }

    2.查找元素

    查找某个满足条件的元素,也是考察的代码的基本功,一般来说,如果范围较小,则需要在一个小范围内遍历,如果范围较大,则利用二分查找。

    1.找x

    输入一个数n(1<=n<=200),然后输入n个数值各不相同的数字,再输入一个x,输出这个值在这个数组的下标(从0开始,若不在则输出-1)

    #include<stdio.h> int main() { int n,m,x; scanf("%d",&n); int a[n]; for(int i=0;i<n;i++) { scanf("%d",&m); a[i]=m; } scanf("%d",&x); for(int i=0;i<n;i++) { if(x==a[i]) { printf("%d",i); break; } if(i==n-1) { printf("-1"); } } return 0; }

    3.图形输出

    有些题目会要求考生根据给定的规则画图,所谓图形,其实是若干字符组成的,因此只需要弄清楚规律就可以编写代码。

    这种题目的做法一般有两种: 1.通过规律,直接输出。 2.定义二维字符数组,找到规律进行填充。

    1.跟奥巴马一起编程

    #include<stdio.h> int main() { int n,m,x; scanf("%d",&n); int a[n]; for(int i=0;i<n;i++) { scanf("%d",&m); a[i]=m; } scanf("%d",&x); for(int i=0;i<n;i++) { if(x==a[i]) { printf("%d",i); break; } if(i==n-1) { printf("-1"); } } return 0; }
    Processed: 0.015, SQL: 8