C语言cg平台卡住

Python018

C语言cg平台卡住,第1张

C语言cg平台卡住很正常,可能是项目管理比较大,所以运行会这样。

2002年6月13日,北京—图形处理解决方案领域的全球领袖NVIDIA公司(Nasdaq代码:NVDA)今日宣布推出面向新业界标准Cg图形编程语言的NVIDIACg编译器。同样也是今天宣布推出的Cg语言(CforGraphics)是一种高级图形编程语言,可为内容开发商提供一个全面的编程环境,使其更轻松、快捷地创建特殊效果和实时电影效果。NVIDIACg编译器是一种突破性的技术,可生成用于创建引人注目的实时视觉效果的优化图形汇编程序

NVIDIACg编译器是NVIDIACg编程环境的核心。面向标准DirectX8或DirectX9兼容图形芯片(GPU)编写的程序可进行编译并可运行在任何兼容硬件上。所形成的程序是一种高效的顶点或象素渲染引擎,其性能水平相当于或优于手工编码图形程序。NVIDIA的Cg编译器的设计目的是为了充分利用NVIDIAGPU的功能和通道,确保最优性能和视觉质量。此外,NVIDIA的Cg编译器还可独具特色地支持OpenGL。面向OpenGL平台编写的Cg渲染引擎被编译和优化,以充分利用NVIDIAGPU里的扩展图形功能。NVIDIA的Cg编译器还是一种交叉平台,可支持面向Windows、OSX、Linux、Mac和Xbox编写的程序。

NVIDIA的Cg编译器的最强大功能是其前向和后向兼容性。NVIDIACg编译器借用NVIDIA著名的统一驱动架构(UDA),并最终采用了统一编译架构(UCA)。程序一旦编写完毕,将可运行在老一代或新一代Cg兼容GPU上,并可在系统GPU运行时间里进行自动优化。这种独特的功能可使开发商无须承担GPU优化的重担。

NVIDIACg工具套件Beta1.0版将包括:

NVIDIACg编译器Beta1.0—对GPU上渲染引擎进行编程的类C语言

NVIDIACg浏览器—带有大型Cg渲染引擎库的原型设计/可视化环境

Cg标准库—一套专门帮助熟悉一般计算机应用的编程人员的内嵌功能

?

你的代码是贪心的思想,比如求最少丢骰子数时

就选择每次丢骰子能达到的最远距离

但有个问题,有可能在某格跳过的格子中,被跳过格子反而能跳过更多的格子

这样的话结果就不正确了,如输入如下示例:

9 3

0 0 2 5 0 0 0 0 0

按你的代码,第一次丢骰子能前进的最远处为从2跳至5后的0,后续还需要丢两次

因此最少丢骰子数为3;但其实丢两次就可以,第一次走到前两个0中的任意一个

第二次走到5的位置,就能直接跳到结尾了

这里提供一种动态规划的思想,新建两个数组max_dp和min_dp,分别保存从当前格子

出发到最后所需要的最多和最少丢骰子数,然后逆序遍历每个位置,最终0处的值即为所求

具体代码和运行结果如下:

如图可知,输入以上实例,动态规划思想得出的最少丢骰子数为2,是正确的

附源码:

#include <stdio.h>

#define max(a, b) ((a) >(b) ? (a) : (b))

#define min(a, b) ((a) <(b) ? (a) : (b))

#define N 1000001

int a[N] = {0}, max_dp[N], min_dp[N]

int main() {

    int n, m, i, j

    scanf("%d %d", &n, &m) 

    for (i = 1i <= ni++) 

        scanf("%d", &a[i]) 

    for (i = 0i <ni++) {

        max_dp[i] = 0// 最多丢骰子数初始化为最小值

        min_dp[i] = n// 最少丢骰子数初始化为最大值

    }

    max_dp[n] = min_dp[n] = 0// 最后一格不用丢骰子

    for (i = n - 1i >= 0i--) { // 逆序遍历

        if (a[i] >0) { // 直接按格子前进

            j = min(i + a[i], n)

            max_dp[i] = max_dp[j]

            min_dp[i] = min_dp[j]

        }

        else { // 需要丢骰子

            for (j = i + 1j <= min(i + m, n)j++) {

                max_dp[i] = max(max_dp[i], max_dp[j] + 1)

                min_dp[i] = min(min_dp[i], min_dp[j] + 1)

            }

        }

    }

    printf("%d %d\n", max_dp[0], min_dp[0])// 0处的值即为所求

    return 0

}

注意:动态规划代码的时间复杂度为O(n*m),根据题目所给的数据范围

是有可能超时的,应该还有更高效的算法,所以这里仅供参考~

把system("explorer.exe")改为

system("start explorer.exe")

cmd 启动了一个程序是会等待这个程序执行结束的。

或者说 cmd 直接输入一个程序名,比如 explorer.exe,cmd会在当前窗口中启动这个程序并等待它结束运行;但是如果是 start explorer.exe 的话,就会另起一个窗口执行这个程序。explorer 这个程序是不论如何都不会自己结束的,所以 cmd 一直在等待这个 explorer 结束运行,也就是你说的卡住了。