研究生复试机试准备之ACM算法入门经典的学习

真的很尴尬,四年弹指一挥间,如今,计算机、数学、英语的水平就像一个刚刚毕业的高中生。如今仍然要入门一些简单的算法,现在真是后悔莫及。悔不该当初没有认真学习,悔不该没有天天coding。但是,“收余恨,且自新,改性情,休恋逝水”。认真准备复试,过了这关再望那关。

第一章 程序设计入门

 输入三个数字,从大到小排序输出

#include <stdio.h>
#include <math.h>

int main()
{
    int a,b,c,t;
    scanf("%d%d%d",&a,&b,&c);
    if(a>b) {t=a;a=b;b=t;}
    if(a>c) {t=a;a=c;c=t;}
    if(b>c) {t=b;b=c;c=t;}
    printf("%d %d %d
",a,b,c);
    return 0;
}

第二章 循环结构程序设计

 在MinGW的gcc(7)中,要把%lld改成%I64d,但奇怪

的是VC2008里又得改回%lld。

第三章 数组和字符串

开灯问题:

有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2
的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯
将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输
入n和k,输出开着的灯的编号。k≤n≤1000。
样例输入:
7 3
样例输出:
1 5 6 7
#include <stdio.h>
#include <string.h>
#define maxn 1010

int a[maxn];

int main()
{
   int n,k,first = 1;
   memset(a,0,sizeof(a));
   scanf("%d%d",&n,&k);
   for(int i = 1;i <= k;i++)
    for(int j = 1;j <=n; j++)
      if(j%i == 0) a[j] = !a[j];

   for(int i = 1; i<= n ;i++)
   if(a[i]) {
    if(first) first = 0 ;
    else printf(" ");
    printf("%d",i);
   }
   printf("
");
   return 0;
}

第四章 函数和递归

第五章 STL

第六章 数据结构

第七章 暴力求解

LAST 典型算法

原文地址:https://www.cnblogs.com/kmxojer/p/14470274.html