百科问答小站 logo
百科问答小站 font logo



C 语言如何判断等差数列? 第1页

  

user avatar   pan-xin-yu-27 网友的相关建议: 
      

接着

@Milo Yip

的思路:扫一遍可以确定首末项及公差,假如输入的数列是一个等差数列,这时给出数列中任意一个元素的值就可以求出它在将数列排序后会位于第几项。如果了解置换群的话,说到这里应该就能想到O(1)额外空间的做法了~

代码用纯C写的。请各位把重点放在算法本身而非实现细节上。

       #include <stdio.h> #define LEN 1000 int a[LEN]; int main(){     int n, i;     scanf("%d", &n);     for(i = 0; i < n; i++)         scanf("%d", &a[i]);          //find min & max and compute delta     int min = a[0], max = a[0];     for(i = 1; i < n; i++){         if(min > a[i])             min = a[i];         if(max < a[i])             max = a[i];     }     int delta = (max - min) / (n - 1);          //try to sort the sequence     int q;     for(q = 0; q < n; q++)         while(a[q] != min + q * delta){             int pos, tmp;             pos = (a[q] - min) / delta;             if((a[q] - min) % delta != 0 || a[pos] == a[q])                 break;             tmp = a[pos];             a[pos] = a[q];             a[q] = tmp;         }      printf("%s
", q == n? "True": "False");      return 0; }     



  

相关话题

  传统的try-catch异常处理是否是编程语言发展中的弯路? 
  如何看待东北大学毕业生李文星找工作被骗到天津传销溺亡,警方称其意外落水非刑事案件? 
  是不是机器学习的框架都偏向 Python ?如果是,为什么? 
  如何看待 Redis 修改 Master/Slave 称呼,以避免让人联系到奴隶制? 
  GitHub 上有哪些,简单、易学的 Python 项目? 
  在这种不同操作下,对于计算机体系的不同是否会造成时间差异? 
  为什么程序员大多成了感情的接盘侠,或者婚姻的接盘侠? 
  程序员如何有效、愉快的使用 GitHub? 
  如何将 C 语言发挥到极致? 
  一头雾水计算机小白求问:软件工程师(程序员)究竟干什么的? 

前一个讨论
为什么菲律宾总统杜特尔特总是对美国发飙?
下一个讨论
如何评价 2016 年 10 月 17 日李彦宏在中国科学技术大学演讲时遭砸场?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利