|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- int main()
- {
- int n,i,j;
- scanf("%d",&n);
- int a[100]={0};
- for(i=0;i<n;i++)
- {
- a[i]=i+1;
- }
- i=0;
- int i1=1,count=n-1;
- while(count)
- {
- if(a[i]!=0)
- {
- if(i1%3==0)
- {
- a[i]=0;
- count--;
- }
- if(i==n-1)
- {
- i=0;
- }
- else
- {
- i++;
- }
- i1=i1+1;
- if(i1==4)
- {
- i1=1;
- }
- }
- else
- {
- if(i<n-1)
- {
- i++;
- }
- else if(i==n-1)
- {
- i=0;
- }
- }
- }
- for(i=0;i<n;i++)
- {
- if(a[i]!=0)
- {
- printf("%d",a[i]);
- }
- }
- return 0;
- }
复制代码
找个人帮我优化一下,感觉我写的好乱
本帖最后由 jackz007 于 2021-1-13 02:20 编辑
- #include <stdio.h>
- int main(void)
- {
- int d[200] = {0} , e , i , j , n ;
- scanf("%d" , & n) ;
- for(i = 1 ; i < n + 1 ; i ++) d[i] = i ; // 用索引号为数组元素编号
- for(e = 0 , i = 1 ; n > 2 ;) {
- e ++ ;
- if(e == 3) { // 数到 3
- for(j = i ; j < n ; j ++) d[j] = d[j + 1] ; // 数组整体向前搬家,删除数到 3 的数组元素
- e = 0 ;
- n -- ;
- } else {
- i ++ ;
- }
- if(i > n) i = 1 ;
- }
- printf("%d\n" , d[2]) ; // 最后剩下 2 个元素,显示后面的那个
- }
复制代码
|
|