月度归档: 2021 年 5 月

iOS:App Store审核被拒的原因

一、应用出现崩溃、加载失败等非常明显的Bug

《App Store Review Guidelines》2.1中明确指明:Make sure your app has been tested on-device for bugs and stability before you submit it……Please don’t treat App Review as a software testing service. We will reject incomplete app bundles and binaries that crash or exhibit obvious technical problems.(请确保你的应用在提交审核之前经过充分测试并且没有Bug……不要把应用程序审核当作软件测试服务,如果你的应用不完整或者存在明显的技术缺陷,它将直接被拒*。)

虽然审核人员发现应用的Bug是几率事件,但是为了保证应用按时上线,在提交之前还是尽量确保它没有明显的Bug比较好。此外,在审核期间,保证服务器稳定也非常重要,如果审核人员审核时出现内容加载失败等情况,也会导致被拒的。

被拒理由原文:

Performance – 2.1

We discovered one or more bugs in your app when reviewed on Wi-Fi.

Specifically, when we attempt to log-in, an activity indicator would spin briefly, then dismisses itself with no further action taken by the app.

The user remains on the log-in screen, and is unable to use your app.
We’ve attached screenshot(s) for your reference.

Next Steps

Please run your app on a device to identify the issue(s), then revise and resubmit your app for review.

注:我们这里举出的,只是其中比较有代表性的一条信息。应用审核被拒后,苹果会在Resolution Centre (解决方案中心)告知被拒的原因以及解决方案。有时候,即使因为同一原因被拒,也可能收到表述不同的苹果反馈信息。

二、应用描述、截图等与应用功能严重不符

如果应用描述、截图和预览视频等营销/宣传性资料中介绍的功能与应用的实际功能大相径庭,或者苹果审核人员并没有在应用中发现应用描述或截图中展示的功能,都有可能被拒。

除此之外,截图太过艺术化,完全不符合应用的实际内容,或选择的分类和应用性质完全不符等等都有可能被拒。

被拒理由原文:

2.3 Details

We were unable to locate some of the features described in your marketing materials or app name.

Specifically, we are unable to locate ‘xxx ’ features that marketed in the app name.

Next Steps

If these features are located in your app, please reply to this message in the Resolution Center to provide information on how to locate them.

Alternatively, please revise your app to ensure that these features are fully implemented or revise your application description, release notes and screenshots to remove this content.

三、错误使用抽*、竞猜等促销方式

抽*、彩票、竞猜等功能可能是应用使用*普遍的促销方式之一了,而苹果对这些也做出了规定。例如:①用于抽*和竞猜的官方规则必须在应用当中予以提供,并且明确表明苹果公司不是赞助商或者以任何形式参与了该活动;②应用不允许使用应用内付费购买信用点或者虚拟货币,并把它们与实际的货币结合使用,也不允许在应用当中购买彩票、抽*券,和进行资金转移……如果你没有完全明白苹果对这方面的审核条款,很可能被拒!

被拒理由原文:

Legal – 5.3.3

Your app enables users to purchase a raffle ticket, top-up their accounts or initiate fund transfers in the app, which does not comply with the App Store Review Guidelines.

Next Steps

While raffle tickets cannot be purchased within the app, you may provide a link that launches your web site, in Safari, and enables ticket purchase.

四、包含虚假、误导用户的信息或功能

如果名称、描述等应用信息或功能中包含虚假、山寨的成分,被苹果认定为:有误导用户的嫌疑,审核时就会被拒*。

被拒理由原文:

22.2 Details

Your app or its metadata contains misleading content. Specifically, your app name, xxx, misleads users that the app includes ability to earn cash.

Next Steps

Please remove or revise any misleading content in your app and its metadata.

五、包含隐藏功能

不要在应用中包含任何隐藏以及没有相关说明文档的功能。如果应用的功能不能让审核人员了解清楚,很可能被拒。且苹果在审核规则中还有这样一条规定:如果这样的行为过分或者反复出现,你可能会被从开发者身份当中除名。

被拒理由原文:

Performance – 2.3.1

We noticed that your app contains hidden features.

Specifically, your app contains a hidden music downloader.

Next Steps

Please remove these features from your app.

六、侵犯第三方版权

苹果对知识产权的保护力度是有目共睹的——不仅在审核条款中单独设了【5.2知识产权】这一条,还开通了投诉通道。

App Store审核条款里明确规定:

①不要使用受保护的第三方内容,如商标、版权作品,或者在应用中使用未经专利许可的创意。

②如果你的应用使用、访问、展示和商业化第三方的服务,请保证你已经获得了相应的授权许可,且必须根据要求在审核前一并提供许可文件。

③应用程序不能对非法分享、保存、转换或者来自第三方源的数据的非法使用提供方便,除非具有相应的合法授权协议。

除此之外,苹果也出台了一系列保护自身知识产权的条款,例如:

①不要明示或暗示苹果公司是你的应用的供应商,或者苹果为你的应用的功能和质量代言。

②禁止创建一个与苹果已有产品、用户界面、应用、广告主题相似的应用,且不允许拼错苹果产品名称。

被拒理由原文:

Legal – 5.2.3

Your app also allows users to either save or download music and/or video content without authorization from the relevant third-party sources.

Next Steps

Please provide documentary evidence of your rights to allow music or video content download from their sources. If you do not have the requested permissions, please remove the music or video download functionality from your app.

七、出现第三方移动平台的名字、图标等

苹果应用商店审核指南2.3.10规定:Make sure your app is focused on the iOS, Mac, Apple TV or Apple Watch experience, and don’t include names, icons, or imagery of other mobile platforms in your app or metadata, unless there is specific, approved interactive functionality.(确保你的应用专注于iOS、Mac、Apple TV or Apple Watch,在应用或者元数据中不包含其他平台的名称、图标、图像,除非有特定的、被认可的互动功能。)

也就是说,*好不要在苹果的应用商店出现和Android等平台有有关的信息,否则被拒的风险大大的。

被拒理由原文:

2.3.10

DetailsWe found that your app and/or its metadata contains inappropriate or irrelevant platform information, which is not in compliance with the App Store Review Guidelines.

Specifically, your app mentioned other platforms, such as Android.

Next Steps

Providing future platform compatibility plans, or other general platform references, is not appropriate in the context of the App Store. It would be appropriate to remove this information.

八、采集了IDFA却未集成广告服务

IDFA (identifier for advertising)能够较精准地识别用户,尤其对广告主追踪广告转化率帮助很大。苹果开发者计划许可协议中规定:只有使用广告服务才有权采集IDFA。

被拒理由原文:

PLA 3.3.12

We found that your app uses the Advertising Identifier but does not include ad functionality. This does not comply with the terms of the Apple Developer Program License Agreement, as required by the App Store Review Guidelines.

Specifically, section 3.3.12 of the Apple Developer Program License Agreement states:

“You and Your Applications (and any third party with whom you have contracted to serve advertising) may use the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine,correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier.”

九、含UGC却未提供用户协议及举报功能

如果应用内有发帖等UGC(用户产生内容)功能,但是却没有要求用户同意条款(EULA),也没有对敏感信息的举报措施等,也可能被拒。

被拒理由原文:

Safety – 1.2

Your app enables the display of user-generated content but does not have the required precautions in place.

Next Steps

Please revise your app to implement all of the following precautions:

  • Require that users agree to terms (EULA) and these terms must make it clear that there is no tolerance for objectionable content.
  • A method for filtering objectionable content.
  • A mechanism for users to flag objectionable content.
  • The ability to block abusive users from the service.
  • The developer must act on objectionable content reports within 24 hours by removing the content and ejecting the user who provided the offending content.

十、用个人账户上传金融类应用

将这一点列出来,是想再次提醒一下理财、P2等金融类相关产品的开发者们:目前,金融类应用只能用对应公司名称的开发者账号上传了。也就是说,如果用个人开发者账号提交金融类应用,会收到苹果的审核未过信息↓↓

被拒理由原文:

PLA1.2

The Seller and Artist names associated with your app do not reflect the name, “xxx有限责任公司,” in the app or its name and metadata, as required by Section 1.2 of the Apple Developer Program License Agreement.(您的应用开发商名称和应用内/应用名称/关键词/描述中的名字(XXX有限责任公司)不匹配,违反了苹果开发者计划许可协议1.2。)

Next Steps

Your app must be published under a Seller name and Artist name that reflects the xxx有限责任公司 brand, If you have developed these apps on behalf of a client, please advise your client to add you to their development team of their developer account.(您的应用必须以符合XXX有限责任公司品牌名称的开发者账号上传。如果您是帮助客户开发的应用,请通知您的客户将您添加到他们的开发者账号团队成员中。)

您的应用必须以符合XXX有限责任公司品牌名称的开发者账号上传。如果您是帮助客户开发的应用,请通知您的客户将您添加到他们的开发者账号团队成员中。

十一、因ipv6网络下无法加载问题而被拒

值得一提的是,*近出现了多起因ipv6网络下无法加载问题而被拒的事件。其实,除了App本身不兼容ipv6会导致无法加载外,审核人员所在的网络环境也可能导致此类问题出现。

被拒理由原文:

We discovered one or more bugs in your app when reviewed on iPad and iPhone running iOS 10.2 on Wi-Fi connected to an IPv6 network.

Specifically, we were still unable access your app…

故该问题出现后,需要根据实际情况来采取相应的措施:①如果App本身不兼容ipv6,*好的办法是让App本身兼容ipv6或通过升级服务器来支持ipv6;②如果App本身已兼容ipv6,是审核人员所在的网络环境导致的问题,其解决方式主要有截图或拍下视频向苹果申诉,或尝试多次提交审核。

十二、没有提供有效的测试账户或演示视频等

为了帮助应用顺利地通过审核,苹果在审核指南的开头部分详细列出了可能降低审核速度或导致应用被拒的常见问题。其中明确指出:

如果应用的某些功能需要登录才能使用,你必须提供一个有效的demo账户的用户名和密码;如果某个功能需要一个很难复制的环境或者需要特定的硬件,你需要提供演示视频或硬件;如果有特殊的配置需要设置,你需要列出相关细节。此外,请确保你的账户信息是完整、*新的。

被拒理由原文:

We were unable to sign in to review your app with the provided demo account. The demo account provided was invalid…

Next Steps

Please provide valid demo account details in the App Review Information section for your app in iTunes Connect. Please ensure that the information you provide includes any data necessary to demonstrate the functionality of your app features …

十三、 没有按要求使用应用内购买,而使用了 “支付宝”等第三方支付方式

苹果规定:如果希望通过付费才可以解锁某款应用中的一些功能(例如,订阅内容、游戏货币、游戏关卡、获取优质内容或解锁完整版本等),必须使用应用内付费(IAP)。应用不允许包括按钮、外部链接或者其他调用方式和行为指导用户采用非IAP的方式付费……如果你的应用内付费的付费类型不正确,你的应用会被拒*。此外,应用不可以直接或间接使用应用内付费的内容和功能向其他用户赠送*品。被拒理由原文:

We noticed that your app enables the purchase of content, services, or functionality in the app by means other than the in-app purchase API, which is not allowed on the App Store.

Next Steps

While the payment system that you have included may conduct the transaction outside of the app, if the purchasable content, functionality, or services are intended to be used in the app, they must be purchased through IAP, within the app – unless it is of the type referenced in guideline 3.1.3 of the App Store Review Guidelines.

十四、和App Store中某款应用的内容以及功能重复

如果应用的内容和功能和App Store中某款应用(尤其是热门应用)的内容和功能类似,或者仅仅对某款应用的名称以及UI等进行了简单地修改,那它可能无法通过苹果的审核。被拒理由原文:

Your app duplicates the content and functionality of apps currently available on the App Store.

Apps that simply duplicate content and/or functionality create clutter, diminish the overall experience for the end user, and reduce the ability of developers to market their apps.

We encourage you to review your app concept and incorporate different content and features that are in compliance with the App Store Review Guidelines.

除此之外,虽然苹果的理念中提倡“简洁”,但并不代表它能够接受功能不够完善、过于单一的应用。如果你的应用没有创意,且不能够给用户提供有价值的体验、或者仅适用于某个小众市场,那它也可能被苹果拒*。

十五、仅支持微信登录

苹果在审核指南5.1.1中指出:如果应用并没有包括明显地、基于用户账户的功能,请允许用户在不登陆的情况下就能正常使用。应用不能要求用户输入个人信息来使用其中的功能,但和核心功能直接相关的应用或法律要求的情况除外。如果应用的核心功能并没有和某个特定的社交网络(例如:Facebook、微信、微博、Twitter等)相关,你必须提供无需登录的方式或通过另一种机制访问的功能。但获取用户基本资料、分享到社交网络,或邀请朋友使用这个应用都不被认为是核心的应用功能。被拒理由原文:

We were required to install WeChat before we could use the alternative login mechanism. Apps should be able to run on launch, without requiring additional apps to be installed.

Next Steps

Please revise your app to ensure that users can use it upon launch. If your app requires authentication before use, please use methods that can authenticate users from within your app.

十六、包含敏感的内容

苹果在审核指南1.1中指出:应用程序不应该包括具有攻击性、令人不悦、侮辱或品味低下的内容。例如,引用或评论宗教、种族、性取向、性别或其他目标人群的内容、公开的性爱或色情内容、针对人或动物被杀害等较为逼真的描述等。被拒理由原文:

Your app includes content that many users would find objectionable and offensive. Specifically, your app name indicates the app contains adult content.

Next Steps

Please remove all objectionable content from your app and submit your revised binary for review.For app design information, check out the following videos…

当然,以上只是近期出现地比较频繁的被拒原因,除了这些之外,比较常见的原因还有以下几点:

1、提交的新版本与上一版相比,功能上变化过大,或在新版本中完全改掉了前一版产品的某些功能。
2、应用内推荐了其他App。
3、在iTunes Connect的应用预览信息中,提供的信息不足。也就是说,如果应用的某些功能需要登录,你却没有提供一个有效的demo账户的用户名和密码,就可能被拒。
4、应用内包含检查更新功能。
5、 含有赌博、色情等违反法律的内容,或出现过于令人反感或者低俗的内容。
6、应用使用了私有API。
7、应用内的功能不能太过单一,或产品太有创意,苹果的审核人员没能理解到它的独到之处。
8、反复提交类似的应用。也就是说,如果提交几个本质上一样的应用,不仅会影响其他应用的审核进程,还会有被拒的风险。
9、不恰当的评级。
10、 应用名称、安装包等地方包含test、demo等字样。

结语

审核被拒一般分为两种情况:Binary Rejected(因应用代码问题被拒,需要重新上传应用并重新排队) 和 Metadata Rejected(因元数据被拒,只需修改信息,不再需要重新上传),虽然后者发生后只需要修改信息即可,但无论哪种情况发生,都会浪费一定的时间。所以,在提交审核前,建议大家仔细研究一下苹果的各项审核规则及常见的被拒原因。

此外,如果真的不幸中招,也不用太过慌张。被拒后,苹果会将被拒理由、解决方案、具体违反了哪项条款(一般情况下,反馈信息中,*前面的数字对应的便是App Store审核规则或开发者计划许可协议的相应条款)等发到Resolution Centre (解决方案中心)。通常情况下,按照苹果的建议仔细进行修改,再次提交便能通过。

iOS审核被拒大全

断掉的链接

应用程序中所有的链接必须是功能性的。对于所有应用程序来说,链接至一个提供*新联系信息的用户支持是必需的。如果你提供了一个可自动更新或免费订阅的链接,再或者你的应用属于儿童类别,那么你必须提供一个链至你的隐私策略的链接。

 

占位符内容

在提交应用进行审核之前要完成所有的图片和文本。仍处于开发阶段或者包含占位符内容的应用不能准备发布,也不能通过审核。

 

信息缺失

在iTunes Connect的App Review Information部分输入所有所需的细节信息。如果有些功能需要注册,提供有效的demo账户用户名和密码。如果有特殊的配置需要设置,列出细节。 如果有功能需要一个很难复制的环境或者要求特定的硬件,那要准备好提供一个demo视频或者硬件。同样,请确保你的账户信息是完整的和*新的。

 

不准确的描述

应用程序的描述和截图应当清晰精确地传达其功能,这样可帮用户理解你的应用程序,并有助于塑造正向的用户体验。

 

误导用户

你的应用程序必须像你宣传的那样,不能给用户一种它并非如此的印象。如果你的App承诺了某项特性和功能,那么它需要实实在在交付给用户。

 

不合标准的UI

苹果高度推崇整洁的、精致的以及对用户友好的界面。开发者需要仔细规划设计,遵循苹果的设计规则和UI DesignDos and Don’ts,这样才能确保你的UI能达到要求。

 

广告

提 交应用进行审核时,苹果会询问你的应用程序是否使用Advertising Identifier (IDFA)进行广告宣传。如果你表明App使用了IDFA,但是它没有广告功能或者没有正确地展示广告,那么你的应用程序可能会遭到拒*。要确保在 iOS设备上对App进行了测试,以验证能正确展示广告。同样,如果你表明App没有使用IDFA,但它确实使用了该服务,那么你的App将会被归为 “Invalid Binary”状态。

 

网页剪报、内容聚合或者链接集合

你的App应当是迷人的、有用的,并充分利用了iOS独有的特性。iOS应用程序中的网站,web内容并没有针对iOS格式化,并且有限的web交互难以做出一款高质量的应用程序。

 

反复提交类似的应用

因提交几个本质上一样的应用程序而影响其他应用的审核进程,那么将会有被拒的风险。通过仔细推敲将几个应用程序合并为一个,从而来提高你的审核经验和未来用户的体验。

 

没有足够持久的价值

如果你的应用程序没有提供丰富的功能或者内容,或者仅仅应用于一个小的利基市场,那么它可能不会被批准。在创建应用程序之前,可查看App Store中该类别的其他应用程序,并考虑你如何才能提供一个更好的用户体验。

常见App提交上架被拒原因(网友版):

1、App中提到了Android字眼;

2、App中用到了苹果的标志;

3、拨打电话,涉嫌扣费;

4、App中包含谈论Android系统的内容;

5、修改了状态栏;

6、程序中有重大bug;

7、只有第三方登录,没有自己的注册登陆功能;

8、网络功能无法正常访问;

9、App中包括色情内容(色情交易,色情展示);

10、有微信分享功能,需要强制用户安装微信,才能使用该功能,被拒;

11、App用了圆角按钮被拒;

12、App中有图标不能点击,也没有置灰或者隐藏;

13、被拒理由:应用里的积分从哪里来,到哪里去;

14、应用里面表示有广告,但是审核者玩了后说没广告,后来申述成功,因为第二次游戏的时候才会出现广告;

15、绕过苹果的付费渠道,有第三方支付;

16、因为集成了友盟,友盟获取用户mac地址被拒了;

17、App中因为没有举报功能被拒;

18、使用第三方的logo被拒;

19、没有提供测试帐号;

20、没有设置default页,启动画面为黑屏;

21、不符合iOS UI审美观(改UI);

22、只有第三方登录,没有自己的注册登陆功能;

23、App中加了强制评论功能;

24、游戏中包含*励如没有说清楚与苹果没关系会被拒;

25、存放文档的地方由于iCloud会自动备份而被拒*;

26、应用程序里用了著名游戏的关键字(如愤怒的小鸟);

27、因为截图里面放了iPhone的模型被拒;

28、游戏运行崩溃;

29、游戏截图中有“测试字样”;

30、游戏太简单;

31、iPhone版不支持480*320分辨率被拒;

32、一次提交多个相同的游戏;

33、App使用图片存在版权问题;

34、加了广告框架,游戏中缺没有广告显示;

35、内购不能使用;

36、娱乐分类App,因缺乏娱乐性被拒;

37、game center不能使用;

38、App Store显示名字和软件名称不符合;

39、支付时不得强制获取用户信息,必须在看到价格之前让用户登录、注册;

40、App内购,产品类型不符合;

41、App不符合中国法律;

42、上传通讯录没有通知;

43、内购没有Restore按钮;

44、有去除广告的按钮,但没发现有广告;

45、版权问题,没有提供相关的版权文件;

46、对不存在普遍比较标准的几类人进行比较和评判;

47、App界面设计太像一个网页了;

48、注册只局限移动或者联通账号被拒;

49、关键字不符合要求;

50、不能强迫用户注册;

51、App名字太色情;

52、涉及到音乐、视频类的数据,特别是国外的,如在提交时没有提及版权协议之类的被拒;

53、英文App介绍审核人员看不懂,后改中文通过;

54、内容太简单,说是浪费用户时间;

55、做浏览器的,分级必须选17+;

56、地图应用,Google大神的logo没有显示;

57、Support URL无法访问;

58、界面风格不符合iOS风格;

59、应用评级,从4+改成12+,再改成16+*后说我不符合16+,我再改回4+,竟然过了;

60、技术支持地址写的微博地址,被拒,原因:不能将需要登陆才能访问的网址作为技术支持地址;

61、Splash上放了个蝙蝠侠蜘蛛侠,版权问题未给通过,后让UI改画了一个猥琐男人,通过了;

62、说给出的应用不该用App开发,应该用HTML5;

63、用户在应用里自己下载的文档都不能存放在Document文件夹下被拒;

64、应用内提到付费项目但没有通过苹果付费通道;

65、做了款社交的软件,上线的时候没有提供账号和密码,导致审核的时候进不去;

66、论坛模块里由用户发的活动贴提到安卓平台和WP平台被拒;

67、按钮位置不符合iOS风格;

68、开放了document分享功能,被退回,理由:不需要分享,为何开放;

69、一个笑话App,开机画面上有“逗比”这两个字,苹果审核说含有粗俗不文明的文字,然后被拒了;

70、QQ登陆功能,但是没下载QQ就不行;

71、出现了“给我们五星好评”之类的文字;

72、*次没有给用户举报的功能;

73、审核人员打开App无法加载内容,一般是因为国内服务器的问题。解决方法是录个App的操作视频,放到youtube上,发给苹果,屡试不爽;

74、界面太丑被拒,换了张背景图通过了;

75、年龄设置太低,含有成人内容;

76、iPad 写成了IPad;

77、App中出现了乔布斯为封面的出版物图片;

78、没提供注册功能被拒;

79、按钮图片类似iPhone桌面图标被拒;

80、在程序说明中有“越狱”两字被拒;

81、由于iCloud云备份的问题被拒*,将备份功能关闭通过;

82、使用第三方SDK,有个提示信息遮挡了状态栏;

83、图片上有链接;

84、按钮点击无效被拒*;

85、内容包含苹果产品iPad;

86、App中有竖中指的图片;

87、App里做了次抽*,*品是apple的产品;

88、App含有vip功能,涉嫌应用内收费;

89、IDFA展示广告没有提供视频;

90、注册页未添加privacy声明文件;

91、用了显眼的词语,其实就是”Beautiful girl”之类的,说内容令人反感;

92、引导页文案与内容不符;

93、网络工具软件,要求支持国外的电信运营网络被拒;

94、程序内按钮设计成标准的iOS icon;

95、因为应用截图被拒。

96、名字不符合,包含与当前App不符的内容,包含特殊含义的歧义字符;

97、App中有积分墙;

98、菜单中有一个文字包含测试;

99、应用请求使用地理位置权限,但相关功能藏得比较深,Apple说没找到相关功能;

100、App的功能过于单一或仅仅是一个demo;

101、在注册时强制获取用户信息;

102、强制玩家给App评5星好评;

103、没有兼容iOS;

104、App中出现了Beta字样;

105、做了一款智能家居的应用,没有提供应用控制智能设备的视频地址没拒;

106、资讯客户端焦点图放出了盘古破解iOS8越狱的新闻;

107、截图中出现一只玩具企鹅,然后拒*说我们发现这个营销截图不能充分反映你的应用使用;

108、因为上行短信实现用户认证被拒;

109、测试人员的手机号在国外,因为收不到国内短信被拒;

110、如果有积分制度要说明和苹果无关。

被拒的原因有以下这些:

1. 条款和条件

 

1.1 为App Store开发程序,开发者必须遵守 Program License Agreement (PLA)、人机交互指南(HIG)以及开发者和苹果签订的任何协议和合同。以下规则和示例旨在帮助开发者的程序能获得App Store的认可,而不是修改或删除任何其他协议中的条款。

2. 功能

2.1 崩溃的程序将会被拒*。

2.2 存在错误的程序将会被拒*。

2.3 跟开发者宣传不符的程序将会被拒*。

2.4 无应用文档或隐藏功能与描述不符的程序将会被拒*。

2.5 使用非公开API的程序将会被拒*。

2.6 在指定容器范围外读写数据的程序将会被拒*。

2.7 以任何方式或形式下载代码的程序将会被拒*。

2.8 安装或运行其他可执行代码的程序将会被拒*。

2.9 beta版、demo版、trial版和test版的程序将会被拒*。

2.10 iPhone程序必须不经修改就能以iPhone分辨率和2倍 iPhone 3GS的分辨率在iPad上运行。

2.11 与App Store已有程序重复的应用可能会被拒*,特别是数量很多的情况下,比如手电筒应用和爱经应用。

2.12 有用性不显著、不独特的应用或者与网站简单捆绑的应用有可能被拒;不提供任何持久娱乐价值的程序可能会被拒*。

2.13 主要用于营销或广告的程序将会被拒*。

2.14 提供欺骗或虚假功能,却有没有明确标示的应用程序将会被拒*。

2.15 大于100MB(绿色原先是50MB)无法通过蜂窝网络下载的应用(App Store会自动禁止)。

2.16 多任务程序使用后台服务仅限于几种目的:VoIP,音频播放,地理位置,完成任务以及本地提醒等。

2.17 应用程序只允许使用iOS WebKit框架和WebKit Javascript浏览web内容。

2.18 鼓励酗酒或使用违禁药物,或引诱青少年饮酒或吸烟的程序将会被拒*。

2.19 提供错误的系统诊断或设备数据的应用将会被拒*。

2.20 向App Store上传大量相似版本程序的开发者将会从iOS开发者计划中除名。

2.21 简单的歌曲或者影片应用要提交到iTunes store,书籍类应用应该提交到iBookstore。

2.22 武断地根据环境(如定位或者运营商)限制用户使用的应用会被拒。

2.23 应用必须遵守iOS数据储存指导方针(iOS Data Storage Guidelines ),否则应用将被拒。

2.24 存放在Newsstand的应用必须遵守开发者项目许可协议(Developer Program License Agreement)的表1、表2以及表3,否则应用将会被拒。

2.25 类似App Store,基于购买或者促销的目的而展示其他应用的应用将会被拒*,除非是经过特殊审核批准(比如健康管理、航空以及其他无障碍需求等),或者为特殊群体用户提供具有重大意义的附加值的应用。

2.26 只有当app采集是出于特殊审核需求时,app才可以展示和推荐自身以外的其他应用程序,比如健康管理、航空以及无障碍需求等,否则应用程序将会被拒*。

3. 元数据(名称、描述、评级、排名等)

3.1 应用或者元数据中提到其他任何移动平台将会被拒。

3.2 带有占位符文本的程序将会被拒*

3.3 描述中有与程序内容和功能不相关的信息的应用将会被拒*。

3.4 为了不混淆用户,iTunes Connect中的应用名称应该和展示在设备上的应用名称一致。

3.5 不同尺寸的app icon要一致,否则会造成混淆。

3.6 程序图标和截图不符合4+年龄评级的程序将会被拒*。

3.7 目录与类型不适合于程序内容的程序将会被拒*。

3.8 开发者有责任为其程序指定适合的评级。不相称的评级可能会由苹果公司修改。

3.9 开发者有责任为其程序指定恰当的关键字。不恰当的关键词可能会被苹果公司修改/删除。

3.10 有以下行为的开发者将会被苹果从iOS开发者计划中除名:试图操纵或者欺骗用户评级,伪造或者付费评级,以及其他不相称的行为。

3.11 在安装下载之前推荐用户重启iOS设备的应用将会被拒。

3.12 在提交审核过程中,应用程序应包含能正常运行的URL,比如支持URL和隐私政策URL。

3.13 如果应用程序的截图和营销文本没有清晰地确定需要额外单独购买(比如使用IAP)的内容或者项目,那么应用程序将会被拒*。

3.14 App预览可以仅使用从应用程序捕获的视频屏幕、旁白、文本以及design overlays,否则应用程序将会被拒*。(10.11更新)

3.15 添加App预览的应用程序,未经许可展示真人个人信息将会被拒*。(10.11更新)

3.16 App预览可能仅包括在所有选定地区内经过授权许可用于此目的的音乐。(10.11更新)

3.17 App预览包含未经许可的通过app播放的内容(比如iTunes playlist和YouTube流媒体)的应用将会被拒*。(10.11更新)

4. 位置

4.1 在收集、传输或使用位置数据之前未通知并获得用户同意的程序将会被拒*。

4.2 使用基于位置的API来自动控制车辆、飞机或其他设备的应用程序将会被拒*。

4.3 使用基于位置的API用于调度、车队管理或应急服务的程序将会被拒*。

4.4 当与应用功能或服务密切相关时可以使用位置数据,或者用于经过授权的广告。(10.11更新)

5. 推送通知

5.1 不使用苹果推送通知 (APN)应用接口提供推送通知的程序将会被拒*。

5.2 未从苹果获得Push Application ID便擅自使用APN服务的程序将会被拒*。

5.3 在首次推送消息或者要求推送通知运行之前未获得用户许可的应用将会被拒*。

5.4 使用推送通知发送敏感个人信息或机密信息的程序将会被拒*。

5.5 使用推送通知发送非请求消息或用于钓鱼或群发垃圾邮件用途的程序将会被拒*。

5.6 应用程序不可使用推送通知发送广告、促销或任何类型的直销信息。

5.7 应用程序不能向使用推送通知服务的用户收取费用。

5.8 使用推送通知会过多利用APN服务的网络流量或带宽或给设备带来过度负担的程序将会被拒*。

5.9 如果应用程序传送病毒、文件、计算机代码或程序,并且对APN服务的正常运行造成损害或中断,那么该程序将会被拒*。

6. 游戏中心

6.1 向终端用户或任意第三方显示玩家ID的程序将会被拒*。

6.2 将玩家ID用于任何未经游戏中心条款批准用途的程序将会被拒*。

6.3 试图进行反向搜索、跟踪、关联、挖掘、获得或利用玩家ID、别名或通过游戏中心获得其他信息的开发者将会iOS开发者计划除名。

6.4 游戏中心信息(例如排行榜分数)只能通过游戏中心用于应用中。

6.5 利用游戏中心服务发送非请求信息或用于钓鱼或群发垃圾邮件的程序将会被拒*。

6.6 使用游戏中心过多占用网络流量或带宽的程序将会被拒*。

6.7 如果程序能够传送病毒、文件、计算机代码或程序,并且对游戏中心服务的正常运行造成损害或中断,该程序将会被拒*。

7. 广告

7.1 人工刷广告浏览量或者广告点击率的应用程序将会被拒*。

7.2 包含空iAd广告的应用程序将会被拒*。

7.3 主要设计目的在于显示广告的应用程序将会被拒*。

8. 商标与商品外观

8.1 应用程序必须遵守“Guidelines for Using Apple Trademarks and Copyrights”和“Apple Trademark List”中说明的所有条款与条件。

8.2 任何误导和暗示苹果公司是该应用程序来源或提供商,或者苹果公司以任何形式表示认可其质量或功能的应用程序将会被拒*。

8.3 与目前已有苹果产品或者广告主题外观相似或混淆的应用程序将会被拒*。

8.4 在应用程序名称中将苹果产品名拼错的应用程序(例如,GPS for Iphone,iTunz)将会被拒*。

8.5 使用受保护的第三方材料(商标、版权、商业机密、其他私有内容)在申请时需要提供一份文本形式的版权确认。

9. 媒体内容

9.1 不使用媒体播放器框架(MediaPlayer Framework)获取音乐库中媒体内容的应用程序将会被拒*。

9.2 用户界面模仿任何iPod界面的应用程序将会被拒*。

9.3 通过蜂窝网络传输的音频流内容每5分钟不得超过5MB。

9.4 通过蜂窝网络传输超过10分钟的视频流内容需要使用HTTP Live Streaming,并包含一个基准线为64kbps的音频HTTP Live Streaming。

10. 用户界面

10.1 应用程序必须遵守苹果的《iOS Human Interface Guidelines》中所有的条款和条件。

10.2 外观与与iPhone的自带应用(比如App Store、iTunes Store和iBookstore)相似的应用将会被拒*。

10.3 未能按苹果《iOS Human Interface Guidelines》描述正确使用系统提供的项目(比如按钮、图标)的应用将会被拒*。

10.4 创建多桌面/主屏幕环境或者模拟multi-App插件体验的应用程序将会被拒*。

10.5 修改音量大小和铃声/静音开关等标准开关功能的应用程序将会被拒*。

10.6 苹果和我们的客户高度推崇简单、精致、富有创造性以及经过精心设计的界面。虽然需要付出更多,但却非常值得。苹果设立了很高的门槛。如果你的用户界面太过复杂或者水准不高,可能会被拒*。

11. 购买与货币流通

11.1 使用App Store以外的渠道解锁或开启附加属性和功能的应用程序将会被拒*。

11.2 使用应用内支付系统(IAP)以外的系统购买内容、功能或服务的应用软件将会被拒*。

11.3 使用IAP购买实物商品和并非用于该软件的服务的应用软件将会被拒*。

11.4 应用程序使用IAP购买积分(Credit)或者其他的货币必须在本应用中消费。

11.5 使用IAP购买已过期积分(Credit)或者其他货币的应用软件将会被拒*。

11.6 使用IAP订阅的内容至少要持续7天,而且允许在用户的其他iOS设备间共享。

11.7 应用程序使用IAP购买项目必须分派到正确的购买类型中。

11.8  使用IAP购买iOS内置功能(如照相机,陀螺仪)的应用程序将会被拒*。

11.9 含有超过限定时间的内容或服务的应用程序将会被拒*,除了特殊批准的内容(比如films、电视节目音乐以及书籍)。

11.10 保险类应用程序必须免费,遵守发布地区的法律,并且不能使用IAP。

11.11 一般而言,你的应用程序越贵,我们的评审越彻底。

11.12 提供订阅功能的应用必须使用IAP,苹果将会按照 Developer Program License Agreement 中的约定与开发者按30/70比例分成。

11.13 在应用内使用跳转至外部购买或订阅链接的应用将会被拒,比如“buy”按钮跳转至一个购买电子书的web页面。

11.14 只要应用内没有跳转至外部购买、订阅的按钮或链接,苹果允许这些应用读取或展示经批准的、在应用外购买或订阅内容(特别是杂志、报纸、书籍、音频、音乐、视频以及云存储内容)。苹果只能通过应用程序内的购买获得一部分收益。

11.15 应用程序可以只使用自动更新订阅期刊(报纸、杂志)、商业应用程序(企业类、效率类、专业创意类以及云存储类)和媒体应用程序(视频、音频、声音),否则应用程序将被拒*。

11.16 当与特定的经过审核的实体产品(比如玩具)结合使用时,应用程序可以使用获得批准的附件功能,只要附加功能完全依赖于该硬件产品(比如一款用于控制望远镜的应用程序)或者也可以在不使用实物产品的情况下使用应用程序,比如作为成功的*励或者使用IAP。

11.17 如果应用功能遵照各州和联邦法律,那么应用可以用来促进被认可的虚拟货币的流通。

12. 抓取和聚合

12.1 从苹果网站(例如apple.com、iTunes Store、App Store、iTunes Connect以及Apple Developer Programs等)抓取任何信息或者使用苹果网站内容和服务进行排名的应用程序将会被拒*。

12.2 应用软件可以使用获得批准的苹果RSS feeds,例如iTunes Store RSS feeds。

12.3 只是简单的网页剪切、内容整合或者收集链接的应用程序可能会被拒*。

13. 损害设备

13.1 怂恿用户以可能造成损害的方式使用苹果设备的应用软件将会被拒*。

13.2 快速耗光设备电量或产生过多热量的应用软件将会被拒*。

13.3 能导致用户人身伤害的app将会被拒*。

14. 人身攻击

14.1 涉及诽谤、人身攻击性质以及内容狭隘卑鄙的应用软件或者打击特定个人或组织的应用软件将会被拒*。

14.2 职业政治讽刺家和幽默作家不受这一条款约束。

14.3 展示用户创作内容(UGC)的应用程序必须提供一个过滤不良资讯的方法,一个用户可以标记具有侵犯性内容的机制以及可以阻止辱骂用户的能力。(10.11更新)

15. 暴力

15.1 应用程序中出现人或动物被杀、致残以及枪击、刺伤、拷打等受伤情形的真实画面将会被拒*。

15.2 出现描绘暴力或虐待儿童等内容的应用程序将会被拒*。

15.3 游戏中出现的“敌人”不可指向一个特定种族、文化、一个真实存在的政府、企业或者其他任何现实中的实体。

15.4 对武器进行真实描述以怂恿非法使用或滥用这些武器的应用程序将会被拒*。

15.5包含俄罗斯轮盘赌博内容的游戏将会被拒。

16.令人反感的内容

16.1 应用程序中出现过于令人反感或者低俗的内容将会被拒*。

16.2 在设计上激怒用户或令人感到厌恶的应用程序将会被拒*。

17.隐私

17.1 在未经用户事先许可,或未告知用户如何使用信息,在何处使用信息的情况下,应用程序不能传输用户数据。

17.2 要求用户提供电子邮箱地址和出生日期等私人信息才可使用其功能的应用程序将会被拒*。

17.3 仅出于遵守适用的儿童隐私法规的目的,应用程序可以要求用户的出生日期(或者使用其他age-gating机制),但是必须包括一些有用的功能或者娱乐价值,不管用户年龄大小。

17.4 应用程序收集、传输以及分享未成年用户个人信息(比如名字、地址、邮件、位置、照片、视频、绘画、聊天以及其他个人数据,或者与以上所述相关的永久性标示符)必须遵守应用儿童隐私法规,并且必须包含隐私条款。

17.5 包含账号注册或者访问用户现有账号的应用程序必须包含隐私策略,否则将会被拒*。

18. 色情

18.1 含有色情素材,也就是《韦氏词典》中定义的“旨在激发情欲,对性器官或性行为的明确描述或展示,而无关美学或情绪感受”的程序将会被拒*。

18.2 用户频繁提供生成色情内容的应用程序(比如以前的Chat Roulette程序)将会被拒*。

19.宗教,文化与种族

19.1 涉及宗教、文化或种族群体的引用或评论包含诽谤性、攻击性或狭隘内容,或会使特定群体遭受伤害或暴力的应用程序将会被拒*。

19.2 程序可以包含或引用宗教经文,程序所提供的引用或翻译必须准确且不会引起误导。评论应该有教育意义,可以令人开阔眼界,而不应有煽动性。

20. 竞赛、赌博、彩票以及抽*

20.1 赌博和竞赛必须由应用程序的开发者或者app所属公司发起。

20.2 应用程序必须展示赌博和竞赛的正式规则,并声明苹果不是发起者,也没有以任何方式参与活动。

20.3 开发者运营一款具有抽*性质的应用必须经过法律允许,并且抽*应用必须具备以下特征:报酬、机会以及*品。

20.4 允许用户在应用中直接购买彩票或彩券的应用将会被拒。

20.5 提供真钱游戏(比如体育博彩、扑克牌、赌场游戏以及赛马)的应用程序必须有应用使用区当地必要的许可和允许,必须限制在这些区域,必须可以从App Store免费下载。

20.6  使用IAP购买信誉或者货币,且结合真钱游戏的应用将会被拒*。

21.慈善与援助

21.1 包含可以向已认证的慈善组织捐赠功能的应用程序必须是免费的。

21.2 捐赠款项的募集必须通过Safari浏览器访问web页面或是手机短消息完成。

22. 法律要件

22.1 应用程序必须遵守所有发布地区当地法律,开发者有义务了解并遵守所有当地法律。

22.2 包含虚假,欺诈或误导性陈述的程序将会被拒*。

22.3 任何招徕、促进或鼓励犯罪或明显鲁莽行为的程序将会被拒*。

22.4 支持非法文件共享的程序将会被拒*。

22.5 被设计用以非法赌博工具的应用程序(包括点算牌)将会被拒*。

22.6 具有匿名或恶作剧拨打电话或发送类似短信/彩信功能的程序将会被拒*。

22.7 任何开发暗中收集用户密码或用户私人数据程序的开发者将会从iOS开发者计划中除名。

22.8 包含非法律执行部分发布的DUI检查点信息,或者怂恿/协助酒后驾车的应用将会被拒*。

22.9 任何计算药用剂量的应用必须提交药品制造商或者认可机构(比如医院、保险公司以及高校)。

22.10.在未授权的情况下使用iTunes音乐预览的应用程序将会被拒*。(新增)

23. Passbook

23.1 Passbook Passes可被用来支付或者接收支付,传递商业信息或者提供验证(比如电影票、飞机票、优惠券以及其他),而把Passbook Passes用于其他用途的应用程序可能会遭到拒*,并且会被撤销Passbook证书。

23.2 Passes必须包含有效的pass发行人有效的联系资料,否则app将会被拒*,并且Passbook证书也会被取消。

23.3 Passes必须经过实体签名,并基于其名字、商标或者品牌进行分发,否则应用程序将会被拒*,而Passbook证书也可能会被撤销。

24.儿童类别

24.1 主要供儿童使用的应用程序必须包含隐私政策,必须适用于应用程序的儿童隐私法。

24.2 主要供儿童使用的应用程序不允许包括行为广告(比如基于用户app内部活动的广告),任何在应用程序中展示的上下文广告必须适合儿童。

24.3 主要供儿童使用的应用程序必须得到家长许可或使用parental gate才能链接至应用程序外部或进行交易。

24.4 儿童类别中的应用程序必须标明“5岁以下,6-8岁或者9-11岁”。

25.扩展

25.1 包含扩展的应用程序必须遵照 App Extension Programming Guide (中文版,英文版)要求。

25.2 包含扩展的应用程序必须提供某些功能(辅助屏幕,附加设置)否则将会被拒*。

25.3 如果扩展的视图中包含营销推广、广告或者IAP内容,那么包含该扩展的应用将会被拒*。

25.4 键盘扩展必须提供一个切换至下个键盘的方法。

25.5 键盘扩展必须具有离线访问功能,否则将会被拒*。

25.6 键盘扩展必须提供和 App Extension Programming Guide 描述一致的数字和十进键盘类型,否则将会被拒*。

25.7 提供键盘扩展的应用必须拥有基本的功能分类和隐私政策,否则将会被拒*。

25.8 提供键盘扩展的应用程序只允许收集用户活动以增强键盘扩展在iOS设备上的功能,否则将会被拒*。

26.HomeKit

26.1使用HomeKit框架的应用程序必须有提供家庭自动化服务的主要目的。

26.2 使用HomeKit框架的应用程序必须在营销文本中说明用途,同时必须提供隐私政策,否则将会被拒*。

26.3应用程序不允许将从HomeKit  API收集的数据用于广告宣传或者其他基于使用的数据挖掘。

26.4 出于其他目的使用从HomeKit  API收集的数据,而不是用于提高用户体验或者家庭自动化功能中硬件/软件性能,这类应用将会被拒*。

27.HealthKit

27.1 使用HealthKit框架的应用程序必须遵守其所在区域的适用法律,以及iOS Developer Program License Agreement中的3.3.28和3.39条款。

27.2将虚假或者错误的数据写入HealthKit的应用程序将会被拒*。

27.3 使用HealthKit框架iCloud中储存用户健康信息的应用程序将会被拒*。

27.4 应用程序不允许将通过HealthKit API收集的用户数据用作广告宣传或者基于使用的数据挖掘目的,除了改善健康、医疗、健康管理以及医学研究目的。

27.5 未经用户许可与第三方分享通过HealthKit API获得的用户数据的应用程序将会被拒*。

27.6 使用HealthKit框架的应用程序必须在营销文本中说明集成了Health app,同时必须在app用户界面清楚阐释HealthKit功能。

27.7使用HealthKit框架的应用程序必须提供隐私政策,否则将会被拒*。

27.8 提供诊断、治疗建议或者控制硬件以诊断或者治疗疾病的应用,若没有根据要求提供书面的监管审批,将会被拒*。

28.TestFlight

28.1应用程序仅能使用TestFlight对以公开发布为目的的应用进行beta版测试,且必须遵守完整的App Review Guidelines。

28.2 当版本中包含的内容或功能有重大变化时,使用TestFlight的应用程序必须提交审核。

28.3 使用TestFlight的应用程序不允许分发给测试者,以作为任何形式的补偿。

29. Apple Pay

29.1 使用Apple Pay的应用程序必须在出售任何商品或者服务之前为用户提供所有材料的购买信息,否则将会被拒*。

29.2 使用Apple Pay的应用程序必须正确使用 Apple Pay Human Interface Guidelines 中的Apple Pay标识和用户界面元素,否则将会被拒*。

29.3 使用Apple Pay的应用程序不能提供触犯任何领域范围法律的用于交付的商品或者服务,也不能用作任何非法目的。

29.4 使用Apple Pay的应用程序必须提供隐私政策,否则将会被拒*。

29.5 只有为了促进或提高商品和服务的交付,或者依照法律要求,使用Apple Pay的应用程序才能与第三方分享通过Apple Pay获得的数据。

如何在Linux上搭建Minecraft服务器

如果想和小伙伴们一起联机玩MC,那么完全可以购买一个云服务器后自己创建一个属于自己的世界。并且实测人数少的情况下也不需要有多好的服务器,我就是用搬瓦工19.9刀一年的服务器搭建的。3、4个人玩还是很开心的。下面就是步骤,感觉小白也能尝试着手动搭建一下。

系统要求

下面是度娘的MC系统要求:
1.CPU:双核
2.内存:20-40人2GB,30-60人3GB,60+人8GB
上面就是服务器端的需求,所以如果只是和小伙伴们一起玩,也并不需要多优秀的服务器。下面是我的配置:
1.CPU:单核
2.内存:512MB
3.Linux系统:CentOS 6.5 x86_64

安装Java

MC是用Java写的就不再赘述了,由于服务器端的MC是一个jar包,我们在配置之后通过运行jar包来开启服务器端,同时我们在 PC
上打开后通过IP地址即可搜索并进入服务器。所以我们首先要先安装Java。一般来说默认安装的是有Java 8的,如果没有可以按 照
下面的方法来安装:

1.验证是否安装Java,如果安装就查看版本

java -version
下面是博主的Java版本:

[root@host ~]# java -version
openjdk version “1.8.0_151”
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
如果不是Java 8或者没有安装,就用下面的方法安装:

sudo yum install java-1.8.0-openjdk

下载MC服务器端

这里有一个要求,就是你和你的小伙伴要拥有同样版本的MC。不同的版本对应着不同的服务器端,所以我们要下载正确的版本。如何看MC版本呢,一般来说MC游戏左上角就写的有了,例如:Mineeraft 1.12。如果没有的同学可以启动MC游戏进入到开始界面即可,下面是博主的MC:

可以看到左上角跟左下角都有版本号,博主的MC是1.12。

既然知道了版本号,那么用命令就直接下载对应版本的服务器端就可以了。需要根据版本号补全命令格式:

sudo wget https://s3.amazonaws.com/Minecraft.Download/versions/版本号/minecraft_server.版本号.jar
以博主版本为例:

sudo wget https://s3.amazonaws.com/Minecraft.Download/versions/1.12/minecraft_server.1.12.jar
这个命令表示我下载(使用wget命令)了对应版本的jar包。
此时,minecraft_server.1.12.jar就躺在当前目录了。

MC,启动!

上面的jar包下载完成之后,我们稍作准备就可以开启了!这里还是提醒一下对Java不熟悉的同学。我们知道可执行文件是.exe。双击直接运行,那么Java可以生成jar包,就是.jar文件,在Windows上也是可以双击运行的。而我们下载的这个MC服务器端其实就是已经做好的jar包,所以我们在“双击”启动之前还是需要一些配置,以及用Linux的方法来启动。

首先,来看一下内存的使用,输入命令:

free -h
我们可以看到当前内存的使用情况,下面是我输入该命令后的显示:

total used free shared buffers cached
Mem: 506M 172M 333M 152K 51M 53M
-/+ buffers/cache: 67M 438M
Swap: 131M 0B 131M
根据free栏的内存数,我们可以确定该给MC服务器分配多大的内存(当然越多越好啦)。
之后,我们就可以使用命令来运行MC服务器了:

sudo java -Xms[初始启动分配内存] -Xmx[*大分配内存] -jar [jar包所在路径]/minecraft_server.[版本号].jar nogui
还是以博主的为例:

sudo java -Xms120m -Xmx160m -jar /root/mc/minecraft_server.1.12.jar nogui
关于路径是要*对路径的,如果不懂可以在当前目录下使用命令:

pwd
然后就能得到当前目录的*对路径了。

关于命令*后一个参数 nogui,是分开的单词 no gui,意思是不需要图形界面,直接用酷(zhuang)炫(b)的黑框显示,其实这样会大大减小内存的使用,如果你的Linux是有图形界面的,就可以不打这个 nogui。

启动成功

上面的命令输入完成,理论上我们就能启动了!这里注意,我们现在如果在Windows下,等于说已经进入到这个程序中了,所以不能再使用Linux命令,等待参数由0%一直到100%就启动完成啦!下面给出博主启动完成的后几行显示:

[05:58:08] [Server thread/INFO]: Loaded 488 advancements
[05:58:08] [Server thread/INFO]: Preparing start region for level 0
[05:58:09] [Server thread/INFO]: Preparing spawn area: 0%
[05:58:10] [Server thread/INFO]: Preparing spawn area: 41%
[05:58:11] [Server thread/INFO]: Preparing spawn area: 76%
[05:58:11] [Server thread/INFO]: Done (4.263s)! For help, type “help” or “?”
这样就启动成功了,不要有顾虑,直接启动PC端连接服务器进入MC吧!(启动失败的情况下面有一个解决方法)

MC,关闭!

启动之后当前这个窗口就可以不用管啦。博主使用的Xshell,直接*小化。联机完毕之后其实直接关了Xshell就行,自动就断开了,当然也可以输入Ctrl+C,直接终止进程。

MC*常见启动失败-同意协议

我们在*次运行完jar包后,无论是否运行成功,都能发现当前目录下多出了一堆文件,运行失败的时候其实就是配置除了一点问题。我们在当前目录找一下文件:eula.txt。我们需要对这个文件进行一下小编辑:

vi eula.txt
按“i”键进入编辑模式,找到这一行:

eula=false
将false改成true即可。
退出vi编辑器:
1.按 esc
2.输入 :wq
这样就同意了那个“ *终用户许可协议”,反正你要玩就得同意。

MC连接失败

这里是上面都启动成功之后,PC端也搜索到了服务器,但是就是连接失败,这样我们可以修改配置,先在jar包目录下找到文件server.propertices 并编辑:

vi server.propertices
找到这一行:

online-mode:true
将true改为false,这个好像是跟正版有关吧。。。

配置
关于MC服务器端的配置,我们就需要修改这个文件了,同样在jar包所在目录下:

vi server.propertices
可以看到,里面是对当前你创建的这个游戏的各种配置,像选择模式啦、世界生成的种子啦、是否有村民啦等等,就像PC创建世界时的各种选项一样。这里就不再介绍了,需要修改的同学自行百度。

MC,Shell脚本启动!

我们如果一直使用上面那一句启动的话是不是非常麻烦!每次都要复制粘贴,那么我们可以写一个简单的Shell脚本,放在jar包所在目录,每次启动的时候直接启动脚本就能进入游戏了,完全不需要Shell编程基础,直接复制粘贴即可!(玩游戏就不要想太多!当然玩爽之后可以了解一下Shell编程)

vi start.sh
进入编辑模式后输入代码:

#!/bin/sh

java -Xms120m -Xmx160m -jar /root/mc/minecraft_server.1.12.jar nogui;
是不是非常简单呢!其实就是让脚本帮你搓启动命令,而你仅需要运行一下脚本即可:

bash start.sh
MC,启动!

关于PC连接问题

之所以放到*后是怕有同学上面的都完成之后发现不知道如何连接到服务器上,或者说根本不知道服务器的IP地址。这里就说一下Linux下如何查看IP地址:

ifconfig
就是如此简单粗暴,一般来说,我们看eth0网卡就行了。如果嫌麻烦,直接看类似格式:192.168.0.1差不多的就是IP地址啦,其实写着 inet addr 的,后面的就是IP地址。然后在PC端多人游戏中搜索服务器时将IP地址输入就可以了。

 

奇偶链表(JS实现)

奇偶链表(JS实现)

1 题目
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。
示例 1:
输入: 1->2->3->4->5->NULL
输出: 1->3->5->2->4->NULL
示例 2:
输入: 2->1->3->5->6->4->7->NULL
输出: 2->3->6->7->1->5->4->NULL
说明:
应当保持奇数节点和偶数节点的相对顺序。
链表的*个节点视为奇数节点,第二个节点视为偶数节点,以此类推。

链接:https://leetcode-cn.com/problems/odd-even-linked-list

2 思路
这道题我的思路*遍遍历,我给每个节点添加一个_next指针,奇数节点指向下一个奇数节点,而偶数节点指向下一个偶数节点,第二次遍历将_next替换为原来的next指针

3代码
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var oddEvenList = function(head) {
if (!head || !head.next) return head;
let link = head;

let headOdd = head;
let headEven = secondNode = head.next;
let lastOddNode;
while(headOdd || headEven) {
if (headOdd) {
headOdd._next = (headOdd.next && headOdd.next.next) || null;
if (!headOdd._next) {
lastOddNode = headOdd;
}
headOdd = headOdd._next;
}

if (headEven) {
headEven._next = (headEven.next && headEven.next.next) || null;
headEven = headEven._next;
}
}

while(head) {
let nextNode = head.next;
head.next = head._next;
delete head._next;
head = nextNode;
}

lastOddNode.next = secondNode;

return link;
};

零钱兑换(JS实现)

零钱兑换(JS实现)

1 题目
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的*少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。
示例 1:
输入: coins = [1, 2, 5], amount = 11
输出: 3
解释: 11 = 5 + 5 + 1
示例 2:
输入: coins = [2], amount = 3
输出: -1

链接:https://leetcode-cn.com/problems/coin-change

2 思路
这道题考察贪心+回溯算法,我们先把硬币排序,然后构造一棵树,先从大面值的硬币开始,逐级相减,直到总金额为0,即找到了目标的*优组合,题解中还可以用动态规划的方法来做

3代码
/**
* @param {number[]} coins
* @param {number} amount
* @return {number}
*/
var coinChange = function(coins, amount) {
coins.sort((a,b) => a-b);

if (amount === 0) return 0;
if (amount < coins[0]) return -1;

let ans = 999999;
d(amount, coins.length – 1, 0, coins);

function d(num, index, len, coins) {
if (num === 0) {
ans = Math.min(ans, len);
return;
};
if (index < 0) return;

for (let k=Math.floor(num / coins[index]); k >=0 && k + len < ans; k–) {
d(num – coins[index] * k, index – 1, len + k, coins);
}
}

return ans === 999999 ? -1 : ans;
};

摆动排序 II(JS实现)

摆动排序 II(JS实现)

1 题目
给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。
示例 1:
输入: nums = [1, 5, 1, 1, 6, 4]
输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6]
示例 2:
输入: nums = [1, 3, 2, 2, 3, 1]
输出: 一个可能的答案是 [2, 3, 1, 3, 1, 2]
说明:
你可以假设所有输入都会得到有效的结果。
进阶:
你能用 O(n) 时间复杂度和 / 或原地 O(1) 额外空间来实现吗?

链接:https://leetcode-cn.com/problems/wiggle-sort-ii

2 思路
很明显,我做这道题就是先把数组排序,然后将数组分为两部分,依次构造新数组的,题解中有O(n)的算法,其先用快速选择法,找到数组的中位数,然后将小于等于中位数的数放置在左侧,大于中位数的放置在右侧,这样就成了两部分了

3代码
/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var wiggleSort = function(nums) {
nums.sort((a,b) => a-b);

let mid = nums.length % 2 === 0 ? Math.floor(nums.length / 2) : Math.floor(nums.length / 2) + 1;

const res = [];

let low = mid – 1;
let high = nums.length – 1;
while (low >= 0 && high >= mid) {
res.push(nums[low–]);
res.push(nums[high–]);
}

if (low >= 0) res.push(nums[low–]); //从后向前进行插入
if (high >= mid) res.push(nums[high–]); //从后向前进行插入

for (let i=0; i<res.length;i++) {
nums[i] = res[i];
}
};

CentOS搭建mc服务器

安装配置
1. 安装配置java环境,用Java1.8
2. 获取mc服务器jar包:
wget https://s3.amazonaws.com/Minecraft.Download/versions/[version]/minecraft_server.[version].jar

# 如采用1.11.2版本服务器端
wget htts://s3.amazonaws.com/Minecraft.Download/versions/1.11.2/minecraft_server.1.11.2.jar

3. 启动mc服务器端:
java -Xms**m -Xmx**m -jar [path]/minecraft_server.[version].jar nogui

# 1.11.2版本
java -Xms512m -Xmx768m -jar /root/mc/minecraft_server.1.11.2.jar nogui
# -Xms:初始启动分配的内存(-Xms512m)
# -Xmx:*大分配的内存(-Xmx768m)
# nogui:用于以基于文本的界面来显示,可减少内存使用。如果使用图形化界面,那么移除nogui选项。

4. 同意*终用户许可协议 EULA
首次启动不会成功启动,会生成一个eula.txt 文件。用vim打开,将行 eula = false 更改为 eula = true,并保存文件,表示同意许可协议。

5. 服务器要开25565端口
服务器端默认使用25565端口,可配置,配置详情参考下一条。

如腾讯云服务器设置步骤:

控制台-云服务器-安全组-安全组规则-添加规则:
来源:0.0.0.0/0
协议端口:TCP:25565

6. 修改server.propertices
如果客户端连接报错,修改服务器端server.propertices文件:
把 online_mode=true 改成online_mode=false,重启服务再试。
这个选项表示是否连接正版服务器验证用户。

其中server.propertices是mc服务端配置文件,可设置游戏难度、世界类型、游戏模式、允许玩家数量、世界大小、黑白名单等等。
配置文件内容:

#Minecraft server properties
#Fri Jan 05 22:45:30 CST 2018
generator-settings=
op-permission-level=4
allow-nether=true
level-name=world #存档名称,也就是读取的存档文件夹的名称,默认为world
enable-query=false
allow-flight=false
announce-player-achievements=true
server-port=25565 #端口,客户端连接的话要指定这个端口,服务器防火墙要开放这个端口。可以不指定,默认为:25565
level-type=DEFAULT
enable-rcon=false
force-gamemode=false
level-seed= #地图种子
server-ip=
max-build-height=256
spawn-npcs=true
white-list=false
spawn-animals=true
snooper-enabled=true
hardcore=false
online-mode=false #是否连接正版服务器校验
resource-pack=
pvp=true
difficulty=1
enable-command-block=false
player-idle-timeout=0
gamemode=0
max-players=20 #*大玩家数
spawn-monsters=true
view-distance=10
generate-structures=true
motd=A Minecraft Server

另外服务器启动后可以在后台执行命令。如设置超级管理员op命令:

op player1 # 把player1设为op,然后player1就能输入作弊码了。
1
安装mod
若要在服务器上安装mod,需下载相应版本的forge jar包(假设1.7.10版本,则为forge-1.7.10-10.13.4.1558-1.7.10-universal.jar),将forge-1.7.10-10.13.4.1558-1.7.10-universal.jar同客户端.minecraft文件夹下libraries目录一起拷贝到服务器端(同服务器jar位于同一目录)。然后执行:

java -Xms512m -Xmx768m -jar /root/mc/forge-1.7.10-10.13.4.1558-1.7.10-universal.jar nogui

执行成功后就会生成mods目录,然后将相关mod的jar包放到mods目录里,重启服务器就可以了(启动服务器也使用上面forge jar包的命令)。

注意客户端需要安装了同样的mod,mod才能有效。

另外:mc1.12用forge-1.12-14.21.1.2443-installer.jar安装mod,用forge-1.7.10-10.13.4.1558-1.7.10-universal.jar启动。

虚拟终端screen
另外为了让此服务器程序一直运行,可以安装虚拟终端screen:

yum install -y screen

开终端mc,然后在里面执行命令:

screen -S mc # 开一个名为mc的session
… # 然后是要在虚拟终端mc下执行的命令
# 将终端后台:按`ctrl+a`,然后按`d`。

回到终端mc:

screen -r mc

列出已经打开的session:

screen -ls #或
screen -list

判断题(15) python篇

判断题(15) python篇

1061. 判断题(15)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。

输入格式:

输入在*行给出两个不超过100的正整数N和M,分别是学生人数和判断题数量。第二行给出M个不超过5的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0代表“非”,1代表“是”。随后N行,每行给出一个学生的解答。数字间均以空格分隔。

输出格式:

按照输入的顺序输出每个学生的得分,每个分数占一行。

输入样例:
3 6
2 1 3 3 4 5
0 0 1 0 1 1
0 1 1 0 0 1
1 0 1 0 1 0
1 1 0 0 1 1
输出样例:
13
11
12
l1=input().split()
l2=input().split()
l3=input().split()
b=0
c=[]
for i in range(int(l1[0])):
a=input().split()
for x,y in enumerate(a):
if y==l3[x]:
b = b + int(l2[x])
c.append(b)
for i in c:
print(i)

 

MC原版服务器搭建教程

前言

  • 本教程适用于有自己的服务器并希望和好友进行原版MC游戏的人使用(正版盗版通用)
  • 本教程完成后将建立一个完全纯净无法添加任何mod的服务器,请酌情阅读

准备

  1. 一枚可以正常访问的服务器
    • 本教程使用腾讯云主机进行演示
  2. 官方提供的服务器jar
    • 别忘了安装java哦
      在cmd中输入java -version来确认安装是否成功
    • 注意!请在服务器上下载该JAR
      推荐访问MCBBS进行下载 论坛中会实时更新*新的游戏包,而本教程将使用MineCraft1.12进行演示
    • 论坛地址:MCBBS
      img_a6b81efe21cbbd8c321595fa26fe00ad.png
      MCBBS
    • MineCraft1.12服务器jar下载地址:MC1.12服务器JAR
      img_df7a3f8cfd98b4efc004118c341b51bd.png
      获取JAR
  1. mc原版客户端
  • 注意!客户端必须和服务器JAR版本相同
    推荐使用启动器进行下载,本教程将使用HMCL启动器
  • HMCL启动器下载链接:HMCL

服务器搭建

好了,现在需要的基本都已经准备好了,接下来就是非常简单的搭建过程啦
注意!在此步骤之前请确保游戏所需端口开放,若不确定请自行配置,或移步服务器端口开放教程进行参考

  • MC默认端口号:25565

启动服务器

还记得刚开始下载的服务器JAR么?没错,它就是一个完整的服务器。现在我们只需要启动它就可以了
把JAR包放到一个合适的地方,然后在相同文件夹下新建一个文本文档,命名为start.cmd,右键编辑后粘贴以下内容:

  1. @echo off
  2. java -Xms1g -Xmx1g -jar 你的服务器包名.jar
  3. pause
新建脚本

 

现在双击start.cmd启动服务器

 

启动服务器

好了?服务器启动了?当然没有,在服务器启动前我们需要先同意EULA协议。对就是文件夹里那个eula.txt。现在按回车关闭cmd,然后打开eula.txt,将其中的eula = false 修改成true。

 

确认eula协议

然后再次双击start.cmd

 

启动成功

当cmd显示Done!时即说明服务器启动成功,在cmd中输入stop保存并关闭服务器

服务器配置

现在服务器已经启动好了,接下来我们要进行非常简单的配置,真的非常简单,别看下面一大堆,其实只有*条时必须要做的,其他都是可选项。
注意!在进行接下来的操作时请保证服务器已经关闭
在服务器根文件夹中有个叫server.properties的文件,我们接下来的操作都会在这个文件中完成。此文件编辑不支持中文,true代表执行,false代表不执行 推荐使用notepad进行设置

设置文件
  • 打开文件后搜索online-mode并将其值改为false,否则盗版游戏将无法连接(必须)
  • server-port 为服务器的游戏端口,修改为你想开启的端口,若为默认则进入游戏时无需输入端口号。注意!请确保此端口和服务器安全组策略中开放的端口一致
  • level-name 的值为地图文件夹名,将你想玩的地图放在根文件夹中并修改此值即可。(或者替换world文件夹内容)
  • pvp 是否开启玩家伤害
  • allow-flight 是否允许飞行
  • rcon.password 远程访问服务器的密码,可以留空或删除
  • spawn-npcs 是否生成NPC
  • spawn-animals 是否生成动物
  • spawn-monsters 是否生成怪物
  • hardcore 是否开启*限模式
  • difficulty 游戏难度
  • gamemode 玩家*次进入游戏时的游戏模式
  • max-players 同时在线的*大玩家数
  • motd 服务器欢迎信息

更多设置请参考服务器详细设置

至此,服务器设置全部完成。

客户端操作

  1. 打开HMCL下载与服务端相同版本的游戏,下载过程非常简单不再赘述
  2. 进入游戏选择多人游戏
  3. 选择直接连接或者添加服务器
  4. 输入 ip地址 : 端口号(若为默认端口的话就不必填端口号)点击完成加入服务器!
    注意!请确保其中冒号“:”为英文字符,

OK!至此教程结束,和你的小伙伴愉快的玩耍吧!

反转链表

1025. 反转链表 (25)
时间限制
300 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即*后不到K个元素不反转。

输入格式:

每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 105)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用-1表示。

接下来有N行,每行格式为:

Address Data Next

其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。

输出格式:

对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。

输入样例:
00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218
输出样例:
00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1
# -*- coding: utf-8 -*-
# 思路:从给定的链首到链末共有数据个数n加1项,id为前n项,next为后n项
def link(address,head,li): # 采用递归将链表所用节点依次存入列表
if head in address:
arrow = address[head]
li.append(arrow)
return link(address,arrow,li)
else:
return li
head,N_all,cell = input().split() # 读取*行输入:首项元素id,元素个数N_all,反转间隔cell
N_all,cell = int(N_all),int(cell) # 将N与cell转换为整数
address,data = {},{} # 初始化两个字典,其中address保存id-next关系,data保存id-data关系
for i in range(N_all): # 将输入信息存入address和data中
a,b,c = input().split()
address[a],data[a] = c,b
# 调用link()函数将所给信息按链接顺序存入id_plus,有N_all+1个元素,末项为链尾指针,指向未知id或为-1
id_plus = link(address,head,[head]) # 第三项必须为[head]而不是[],因为link()函数无法添加*个id
id_plus[-1] = ‘-1’ # 指定链尾指针指向-1
N_e = len(id_plus) – 1 # id_plus中的元素个数为可链接到的元素,从首项到*后的-1,实际对应的数据个数应减1
num, rem = N_e // cell, N_e % cell # 判断要对那些数据进行反转
if num: # 可链接到的数据个数不小于反转间隔
for i in range(num):
id_plus[(i*cell):((i+1)*cell)] = id_plus[(i*cell):((i+1)*cell)][::-1] # 反转
for k,v in enumerate(id_plus[:-1]): # 按规定格式,打印id,data,next
s = ‘{} {} {}’.format(v,data[v],id_plus[k+1])
print(s)
有一个测试点超时,请大神指教!
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100010 //用双向静态链表来解决本问题,定义链表长度为100010
typedef struct Node //定义结点
{
int data; //存储数据
int addr; //存储当前地址
int next; //后指针,存储下一节点的地址
int prior; //前指针,存储前一节点的地址
}Node;
int num,n,address,sum=1; //num为输入节点的总数,n为每次反转节点的个数,address为*个结点的地址,sum为计数器,记录有效节点的个数
void read(Node Nodes[]); //读取数据,建立链表
void reverse(Node Nodes[]); //反转链表,输出结果
int main()
{
Node Nodes[MAXSIZE];
scanf(“%d%d%d”,&address,&num,&n);
read(Nodes);
reverse(Nodes);
return 0;
}

void read(Node Nodes[]) //读取数据
{
int i,addre,addre_p; //addre为当前结点的地址,addre_p为前一节点的地址
for (i=0;i<num;i++) //将每个结点放在地址对应下标的数组单元中,并使当前结点的后指针指向下一节点
{
scanf(“%d”,&addre);
scanf(“%d%d”,&Nodes[addre].data,&Nodes[addre].next);
Nodes[addre].addr=addre;
}
addre=address;
Nodes[addre].prior=-1; //使*个结点的前指针指向-1
addre_p=Nodes[addre].addr; //记录*个结点的地址
addre=Nodes[addre].next; //使下一个结点成为当前结点
while (addre!=-1)
{
Nodes[addre].prior=addre_p; //使当前结点的前指针指向前一个结点
addre_p=Nodes[addre].addr; //使当前结点成为前结点
addre=Nodes[addre].next; //使下一个结点成为当前结点
sum++; //有效结点数+1
}
}

void reverse(Node Nodes[]) //反转链表,输出数据
{
int i,addre,j,addre_save,addre_prior; //addre为当前结点的地址,addre_save为每次反转前的n个结点中*后一个结点的地址,
addre=address; //addre_prior为每次反转前的n个结点中首个结点的地址
if (n==1||n>sum) //如果每次反转结点的个数等于1或大于有效结点的个数,则不反转,依次输出即可
{
while(addre!=-1)
{
if (Nodes[addre].next==-1)
printf(“%05d %d %d\n”,Nodes[addre].addr,Nodes[addre].data,Nodes[addre].next);
else
printf(“%05d %d %05d\n”,Nodes[addre].addr,Nodes[addre].data,Nodes[addre].next);
addre=Nodes[addre].next;
}
}else //否则,进行反转,每次反转n个结点
{
for (i=0;i<sum/n;i++) //总反转的次数为 sum/n
{
for (j=0;j<n-1;j++) //寻找每次反转前的n个结点中*后一个结点的地址
{
addre=Nodes[addre].next;
}
addre_save=addre; //保存本次反转前*后一个结点的地址
if (i!=0) //*次反转不输出,输出前一次反转后的n个结点中*后一个结点的地址,数据以及本次反转后*个结点的地址(注意,这样每次反转才能衔接)
printf(“%05d %d %05d\n”,Nodes[addre_prior].addr,Nodes[addre_prior].data,Nodes[addre].addr);
for (j=0;j<n-1;j++) //除*后一个结点,依次输出本次反转后的其余结点
{
printf(“%05d %d %05d\n”,Nodes[addre].addr,Nodes[addre].data,Nodes[addre].prior);
addre=Nodes[addre].prior;
}
addre_prior=addre; //保存本次反转*后一个结点的地址
if (Nodes[addre_save].next==-1) //如果有效结点已用完,即没有剩余有效结点,则输出*后一个结点,注意其下一个结点地址为-1
printf(“%05d %d %d\n”,Nodes[addre].addr,Nodes[addre].data,-1);
else if (i==sum/n-1) //如果这是*后一次反转,则输出*后一个结点,注意其下一个结点的地址为不反转的*个结点的地址
printf(“%05d %d %d\n”,Nodes[addre].addr,Nodes[addre].data,Nodes[addre_save].next);
addre=Nodes[addre_save].next; //使下次反转前的*个结点成为当前结点
}
for (i=0;i<sum%n;i++) //依次输出剩余不需要反转的结点
{
if (Nodes[addre].next==-1)
printf(“%05d %d %d\n”,Nodes[addre].addr,Nodes[addre].data,Nodes[addre].next);
else
printf(“%05d %d %05d\n”,Nodes[addre].addr,Nodes[addre].data,Nodes[addre].next);
addre=Nodes[addre].next;
}
}
}
用双向静态链表解决,这次不再超时

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速